pre-commit hooks for use on Puppet projects.
Provides the following hooks:
-
epp-validate: validates and syntax-checks Puppet's epp templates.
-
erb-validate: compiles and syntax-checks Ruby erb templates.
-
g10k-validate: uses g10k to validate Puppetfile syntax.
-
puppet-lint: uses
puppet-lint
to check for stylistic issues with Puppet manifests. -
puppet-validate: uses
puppet parser validate
to check the syntax of Puppet manifests. -
r10k-validate: uses r10k to validate Puppetfile syntax.
-
ruby-validate: uses
ruby -c
to validate the syntax of ruby code.
-
Install pre-commit, if you haven't already.
-
Add the following lines to a file named
.pre-commit-config.yaml
in the root of your git repository:- repo: https://github.com/chriskuehl/puppet-pre-commit-hooks.git sha: v2.1.0 hooks: - id: epp-validate - id: erb-validate - id: puppet-lint args: - --fail-on-warnings - id: puppet-validate - id: r10k-validate - id: ruby-validate
You'll almost certainly want to adjust the puppet-lint args for your project. I find the following most helpful:
- --no-80chars-check - --no-documentation-check - --no-puppet_url_without_modules-check
To check ruby style as well as syntax, you may find it useful to add a hook for
rubocop
:- repo: https://github.com/jumanjihouse/pre-commit-hooks rev: 1.11.0 hooks: - id: reek - id: rubocop
To check yaml syntax, you may want to add a hook for
yamllint
:- repo: 'https://github.com/adrienverge/yamllint' rev: v1.15.0 hooks: - id: 'yamllint'
-
Run
pre-commit install
to add pre-commit git hooks. -
Test the hooks work properly with
pre-commit run --all-files
.
Any other arguments to puppet-validate
will be fed directly to
puppet parser validate
, as long as they are in the format --arg=value
.
By default, the latest versions of puppet
and puppet-lint
are used. If
you'd like to use a different version, you can pass additional_dependencies
when definining the hooks.
For example, if you're still using Puppet 3, you can use:
hooks:
- id: puppet-validate
additional_dependencies: ['puppet:<4']
To see what dependencies you might want to change, take a look at
hooks.yaml
in this repo.