TIL: shellcheck som pre-commit hook

Jag kodar bash. Asså mycket. Typ hela tiden. Att då ha ett program som kollar så att min kod är korrekt hela tiden är helt underbart.

In i mitt liv klev idag shellcheck som gör just det, kontrollerar att min bash-kod är korrekt.

Jag skrev således en pre-commit hook till git som ser till så att mina filer är exekverbara och rena enligt shellcheck.
curl http://62878a5f051dd008.paste.se/raw

#!/bin/bash

while read f; do
    # BASH check
    if [[ $(head -n1 "$f" ) == *bash ]]; then
        # Check for failing syntax, override with --no-verify
        if ! shellcheck "$f"; then
            exit 1
        fi
        # All bash files must be executable, might be moved if python
        # check is added.
        if [[ ! -x $f ]]; then
            echo "Error: '$f' is not executable."
            exit 1
        fi
    fi
    # Extend with python check later and so on.
done < <(git diff-index --name-only HEAD)

Lägg den exekverbara filen pre-commit i din globala git template hook katalog, jag har min på /home/brother/git/git-template/hook (git config –global –add init.templatedir ~/git/git-template/) så nu kommer den här hook:en vara med vid varje nyskapat/klonat förråd. Härligt!

This entry was posted in HowTo, Skunkworks and tagged , , , , , . Bookmark the permalink. Both comments and trackbacks are currently closed.