This repo contains custom pre-commit hooks.
The generate-renovate-annotations hook is used to add Renovate comments to conda environment files.
The format of these comments is prescribed with a RegEx rule, with more details in the .documentation
By default, this hook will work for all files matching the environment.*\.ya?ml regular expression.
This matches common formats like environment.yaml, environment.yml, and environment-suffix.yml.
To pull pip packages from an alternate index, each package must be specified with the --internal-pip-package option (multiple allowed).
The index URL is specified with the --internal-pip-index-url option.
Note: The Renovate worker must be configured with adequate credentials if this URL requires authentication.
An example usage is shown below:
- repo: https://github.com/anaconda/pre-commit-hooks
rev: main # Use the ref you want to point at
hooks:
- id: generate-renovate-annotations
args: [
--internal-pip-index-url=https://pypi.anaconda.org/my-organization/simple,
--internal-pip-package=my-private-package,
--internal-pip-package=my-other-private-package,
--create-command="make setup", # Default value
--environment-selector="-p ./env", # Default value
--disable-environment-creation # Creation enabled by default
]The hook is backed by a CLI command, whose help output is reproduced below:
Usage: generate-renovate-annotations [OPTIONS] ENV_FILES... COMMAND [ARGS]...
Generate Renovate comments for a list of conda environment files.
For each file, we:
• Run a command to ensure the environment is created/updated
• Extract a list of installed packages in that environment, including pip
• Generate a Renovate annotation comment, including the package name and
channel. This step also allows for overriding the index of pip packages.
• Pin the exact installed version of each dependency.
╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ * env_files ENV_FILES... A list of conda environment files, │
│ typically passed in from pre-commit │
│ automatically │
│ [default: None] │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --internal-pip-package TEXT One or more packages to pull │
│ from the │
│ --internal-pip-index-url │
│ [default: None] │
│ --internal-pip-index-url TEXT An optional extra pip index URL, │
│ used in conjunction with the │
│ --internal-pip-package option │
│ --create-command TEXT A command to invoke at each │
│ parent directory of all │
│ environment files to ensure the │
│ conda environment is created and │
│ updated │
│ [default: make setup] │
│ --environment-selector TEXT A string used to select the │
│ conda environment, either │
│ prefix-based (recommended) or │
│ named │
│ [default: -p ./env] │
│ --disable-environment-creation If set, environment will not be │
│ created/updated before │
│ annotations are added. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯The run-cog hook can be used to run the cog tool automatically to generate code when committing a file.
One common example is to generate command-line output in a README file.
The example below will run cog on all text-like files, ensuring the working directory is set to the directory in which the file is located.
This is particularly useful if the cog script itself uses subprocess to execute command-line applications.
- repo: https://github.com/anaconda/pre-commit-hooks
rev: main # Use the ref you want to point at
hooks:
- id: run-cog
args: ["--working-directory-level", "-1"]A simple wrapper around the mjml tool to use as a pre-commit hook.
Add this to your .pre-commit-config.yaml
- repo: https://github.com/mattkram/mjml-hook
rev: main # Use the ref you want to point at
hooks:
- id: mjmlThe pre-commit hook will execute any time a file with the pattern *.mjml is staged for commit.
For each of these files, the following command is run:
mjml <filename>.mjml -o <filename>.htmlwhere the base filename remains the same, and the extension is changed.
If the HTML file is already being tracked by git and is changed by the hook, pre-commit will raise an error.
If this is a new template, pre-commit will not fail and you may need to do an amend commit to add the initial HTML file to the git history.
git commit --amend path/to/file.htmlWe have a dev setup that uses conda for environment management.
We also use make to automate common tasks.
The targets are documented below:
| Target | Description |
|---|---|
help |
Display help on all Makefile targets |
setup |
Setup local conda environment for development |
install-hooks |
Download + install all pre-commit hooks |
pre-commit |
Run pre-commit against all files |
type-check |
Run static type checks |
test |
Run all the unit tests |
cog-readme |
Run cog on the README.md to generate command output |
Note: Interestingly, the table above is generated by the
coghook defined in this repo 😄