diff --git a/docs/development/new-package-manager-template.md b/docs/development/new-package-manager-template.md new file mode 100644 index 0000000000000000000000000000000000000000..a5adb38f3d19afe985e72f065b0d765f10e9ab40 --- /dev/null +++ b/docs/development/new-package-manager-template.md @@ -0,0 +1,114 @@ +# New package manager questionnaire + +**Did you read our documentation on adding a package manager?** + +- [ ] I've read the [adding a package manager](../../docs/development/adding-a-package-manager.md) documentation. + +## Basics + +### Name of package manager + +### What language does this support? + +### How popular is this package manager? + +### Does this language have other (competing?) package managers? + +- [ ] Yes (give names) +- [ ] No + +--- + +## Package File Detection + +### What type of package files and names does it use? + +### What [fileMatch](https://renovatebot.com/docs/configuration-options/#filematch) pattern(s) should be used? + +### Is it likely that many users would need to extend this pattern for custom file names? + +- [ ] Yes +- [ ] No + +### Is the fileMatch pattern likely to get many "false hits" for files that have nothing to do with package management? + +--- + +## Parsing and Extraction + +### Can package files have "local" links to each other that need to be resolved? + +### Is there a reason why package files need to be parsed together (in serial) instead of independently? + +### What format/syntax is the package file in? + +- [ ] JSON +- [ ] TOML +- [ ] YAML +- [ ] Custom (explain below) + +### How do you suggest parsing the file? + +- [ ] Off the shelf parser +- [ ] Using regex +- [ ] Custom-parsed line by line +- [ ] Other + +### Does the package file structure distinguish between different "types" of dependencies? e.g. production dependencies, dev dependencies, etc? + +- [ ] Yes, production and development dependencies +- [ ] No, all dependencies are treated the same + +### List all the sources/syntaxes of dependencies that can be extracted + +### Describe which types of dependencies above are supported and which will be implemented in future + +--- + +## Versioning + +### What versioning scheme does the package file(s) use? + +### Does this versioning scheme support range constraints, e.g. `^1.0.0` or `1.x`? + +- [ ] Supports range constraints (e.g `^1.0.0` or `1.x`) +- [ ] No + +### Is this package manager used for applications, libraries, or both? If both, is there a way to tell which is which? + +- [ ] Applications +- [ ] Libraries +- [ ] Both (explain how to tell which is which) + +### If ranges are supported, are there any cases when Renovate should pin ranges to exact versions if rangeStrategy=auto? + +--- + +## Lookup + +### Is a new datasource required? Provide details + +- [ ] Yes, provide details. +- [ ] No. + +### Will users need the capability to specify a custom host/registry to look up? Can it be found within the package files, or within other files inside the repository, or would it require Renovate configuration? + +### Do the package files contain any "constraints" on the parent language (e.g. supports only v3.x of Python) or platform (Linux, Windows, etc) that should be used in the lookup procedure? + +### Will users need the ability to configure language or other constraints using Renovate config? + +--- + +## Artifacts + +### Are lock files or checksum files used? Are they mandatory? + +### If so, what tool and exact commands should be used if updating one or more package versions in a dependency file? + +### If applicable, describe how the tool maintains a cache and if it can be controlled via CLI or env? Do you recommend the cache be kept or disabled/ignored? + +### If applicable, what command should be used to generate a lock file from scratch if you already have a package file? This will be used for "lock file maintenance". + +## Other + +### Is there anything else to know about this package manager?