Nabla custom git hooks
This project intend to be uses by all Nabla products
// spell-checker:disable
// spell-checker:enable
Using pipenv Pipfile
direnv allow
pyenv install 3.10.9
pyenv local 3.10.9
python -m pipenv install --dev --ignore-pipfile
direnv allow
pre-commit install
Using poetry pyproject.toml
pip install -U poetry pipenv-poetry-migrate
pipenv-poetry-migrate -f Pipfile -t pyproject.toml --no-use-group-notation
This hooks requires the following to run:
See requirements.txt for mandatory packages.
This pre-commit hooks requires the following to run:
Install python 3.10 and virtualenv
virtualenv --no-site-packages /opt/ansible/env310 -p python3.10
source /opt/ansible/env310/bin/activate
Install python 3.8 and pyenv
curl -L https://pyenv.run | bash
echo 'export PATH="~/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.10.9
and integrate it with direnv
#pip3.8 install -r hooks/requirements.txt -r requirements.testing.txt
pipenv check
python -m pipenv install --dev
python -m pipenv install --dev --ignore-pipfile
pip install nabla-hooks
pip install git+https://github.com/AlbanAndrieu/nabla-hooks.git
example .pre-commit-config.yaml as following:
- repo: https://github.com/AlbanAndrieu/nabla-hooks.git
rev: v1.0.3
hooks:
- id: git-branches-check
Testing locally
- repo: local
hooks:
- id: git-branches-check
name: GIT branches check
description: Check for old stale and already merged branches from the current repo with user friendly messages and colors
entry: pre_commit_hooks/git-branches-check.sh
language: script
types: [shell]
always_run: true
verbose: true
args: [--max=1, --verbose]
$ pre-commit try-repo . git-branches-check --verbose
Run pre-commit install
pre-commit install -f --install-hooks
Run pre-commit run --all-files
Run SKIP=flake8 git commit -am 'Add key'
Run git commit -am 'Add key' --no-verify
See jira
export JIRA_USER=aandrieu
export JIRA_PASSWORD=XXX
export JIRA_URL=https://localhost/jira
export JIRA_CERT_PATH=/etc/ssl/certs/NABLA-CA-1.crt
export JIRA_CERT_PATH=/etc/ssl/certs/ca-certificates.crt
export JIRA_USER=alban.andrieu@free.fr
export JIRA_PASSWORD=XXX # the token you generated
export JIRA_URL==https://localhost/jira
export JENKINS_URL=https://localhost/jenkins/
export JENKINS_USER=aandrieu
export JENKINS_USER_TOKEN=XXX
First time run
cp -r hooks/* .git/hooks/` or `rm -Rf ./.git/hooks/ && ln -s ../hooks ./.git/hooks && git checkout repo hooks/
We have two directories that interest us:
The /usr/share/git-core/templates/
directory on Linux and C:/Program Files (x86)/Git/share/git-core/templates/
directory on Windows (Note that on 32bit machines msysGit is installed by default on 'C:/Program Files/…') in which the default hooks are being copied from. If you installed Git using another configuration the installation might reside in a different folder. Adjust the path accordingly.
The .git/hooks/
directory is the directory in which the hooks templates are being copied to.
The hooked are being copied from the [...]/share/git-core/templates/
directory. There are other types of templates but they are out of scope for this post.
Note: If you change the templates directory the hooks directory must be a subdirectory of the templates directory. Do not set the templates directory to the desired hooks directory instead.
Run
git config --global --get init.templatedir
rm -Rf .git/hooks
git config --global init.templatedir /workspace/users/albandrieu30/nabla-hooks/
See setup-cfg
python3 setup.py sdist
Builds wheels:
python3 setup.py bdist_wheel
Build from source:
python3 setup.py build
And install:
/opt/ansible/env38/bin/python3 setup.py install
sudo python setup.py develop
pip install .
pip install -e ./
See api-tokens
rm -Rf dist/
python3 setup.py sdist bdist_wheel
# Check package
twine check dist/*
nano $HOME/.pypirc
export TWINE_PASSWORD=pypi-
python3 -m twine upload --repository nabla-hooks dist/* --verbose
All in one
python setup.py register sdist upload
Uploaded nabla-hooks
python
from hooks import get_msg
match_msg
versioneer install
#check with
python setup.py version
python setup.py install
source deactivate
tox --notest
tox -e py # Run tox using the version of Python in PATH
tox py310
From root directory
pytest --cache-clear --setup-show hooks/test/test_pytest.py
pytest --cache-clear --setup-show test/package.py
poetry install
poetry env info
poetry shell
poetry run pytest
poetry build
#poetry publish --build
pdm init
pdm run flake8
npm install --save markdown-toc
markdown-toc README.md -i
markdown-toc CHANGELOG.md -i
pre-commit install
git add README.md
pre-commit run markdown-toc
Check syntax remark-lint
npm run lint-md
Tested with nodejs 12 and 16 on ubuntu 20 and 21 (not working with nodejs 11 and 16)
npm install -g npm-groovy-lint@8.2.0
npm-groovy-lint --format
ll .groovylintrc.json