Redocly/redocly-cli

Add some type of plugin to allow dynamic definition of extensions or config files

marianobntz opened this issue · 2 comments

I have a use case where I run different validations on the files depending on their "state": draft, development, stable or deprecated.

I have 4 different config files for each, but I would like a plugin with a function that would receive the root element and based on the information I decide I can return an extends line or something like that.

I cannot use per-api definitions because I would have to sync the main redocly with the actual state of the files...

Do you have a way to do this?

Thanks! The tool is great and I intend to use it extensively.

I didn't understand your remark about why per-api definitions wouldn't work but there are a few different approaches you could try:

  • write a separate config file for each of the different validations you want to use, and then supply it with --config when you run the lint command (it sounds like you are doing it this way already, and I think it's a good approach)
  • use custom plugin configuration to define easily reusable rulesets

Write an external function to work out which ruleset to use, and then use redocly to do the linting. Let us know how you get on?

Hello, sorry for the late response... 😃
What I want to achieve is:

  • Depending of a specific value INSIDE the json file (info.x-state) (draft,development,stable,deprecated) I want to run different validations.
  • In my validation script I read the value from the file and use different config files
  • In the Visual Studio Code plugin there is a single redocly.yaml file with a single definition, so I cannot run any script...
  • Built-in validations do not support adding a where clause, so I cannot change them dynamically (fixing this could be a solution)

What I was suggesting is to allow some plugin extension to define a list of extensions by running some js code. This way I could use a single initial config that would run different extends based on the file.

Thanks!