From d567b49923499c42287173708eb0f44be594b1a6 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 05:47:50 -0600 Subject: [PATCH 01/15] porting shellcheck, shfmt & forbid-binary --- .circleci/config.yml | 6 +++++- .pre-commit-hooks.yaml | 24 ++++++++++++++++++++++++ README.md | 39 +++++++++++++++++++++++---------------- hooks/forbid-binary.sh | 14 ++++++++++++++ hooks/shellcheck.sh | 14 ++++++++++++++ hooks/shfmt.sh | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 112 insertions(+), 17 deletions(-) create mode 100644 hooks/forbid-binary.sh create mode 100644 hooks/shellcheck.sh create mode 100644 hooks/shfmt.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index e59bc72..ee75c74 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,4 +6,8 @@ jobs: docker: - image: circleci/golang steps: - - run: echo "@TODO:" + - run: | + sudo apt-get update + sudo apt-get -y install shellcheck shfmt + - run: pip install pre-commit + - run: pre-commit install diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml index 8e515d3..a7e71e8 100644 --- a/.pre-commit-hooks.yaml +++ b/.pre-commit-hooks.yaml @@ -42,3 +42,27 @@ entry: hooks/go-golangci-lint.sh language: script files: \.go$ + +- id: forbid-binary + name: Forbid binaries + description: Forbid binary files from being committed + entry: hooks/forbid-binary.sh + language: script + types: ['binary'] + +- id: shellcheck + name: Test shell scripts with shellcheck + description: Shell scripts conform to shellcheck + entry: hooks/shellcheck.sh + language: script + types: [shell] + args: [-e, SC1091] + additional_dependencies: [shellcheck] + +- id: shfmt + name: Check shell style with shfmt + language: script + entry: hooks/shfmt.sh + types: [shell] + args: ['-l', '-i', '2', '-ci'] + additional_dependencies: [shfmt] diff --git a/README.md b/README.md index 3273c3d..8954d42 100644 --- a/README.md +++ b/README.md @@ -4,30 +4,37 @@ A collection of useful Git hooks for use with [pre-commit][]. -## Usage - -Create or append to your `.pre-commit-config.yaml` configuration: - -```yaml -- repo: https://github.com/syntaqx/git-hooks - rev: v0.0.13 - hooks: - - id: circleci-config-validate - - id: go-fmt - - id: go-test - - id: go-mod-tidy - - id: go-generate - - id: go-golangci-lint -``` - ## Available hooks * `circleci-config-validate` - Test if the CircleCI config file is well formed. +* `forbid-binary` - Prevent binary files from being committed. * `go-fmt` - Runs `go fmt` and asserts no changes are needed. * `go-test` - Runs `go test` and asserts no tests are failing. * `go-mod-tidy` - Runs `go mod tidy` and asserts all dependencies have been added. * `go-generate` - Runs `go generate` aginst the projects go files. * `go-golangci-lint` - Runs `golangci-lint`, requires golangci-lint. +* `shellcheck` - Run `shellcheck` against scripts. +* `shfmt` - Run `shfmt` against scripts. + +## Configure `pre-commit` + +Create or append to your `.pre-commit-config.yaml` configuration: + +```yaml +- repo: https://github.com/syntaqx/git-hooks + rev: v0.0.13 + hooks: + - id: circleci-config-validate + - id: forbid-binary + - id: go-fmt + - id: go-test + - id: go-mod-tidy + - id: go-generate + - id: go-golangci-lint + - id: forbid-binary + - id: shellcheck + - id: shfmt +``` ## License diff --git a/hooks/forbid-binary.sh b/hooks/forbid-binary.sh new file mode 100644 index 0000000..28cdcad --- /dev/null +++ b/hooks/forbid-binary.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Original: https://github.com/jumanjihouse/pre-commit-hooks#forbid-binary +# Forked to change runtime to /usr/bin/env on win10 +set -eu + +# Forbid binary files. +# pre-commit uses the "identify" pure python library to detect binary files. + +if [ $# -gt 0 ]; then + for filename in "${@}"; do + echo "[ERROR] ${filename} appears to be a binary file" + done + exit 1 +fi diff --git a/hooks/shellcheck.sh b/hooks/shellcheck.sh new file mode 100644 index 0000000..38bd08e --- /dev/null +++ b/hooks/shellcheck.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# Original: https://github.com/jumanjihouse/pre-commit-hooks#shellcheck +# Forked to change runtime to /usr/bin/env on win10 +set -eu + +# Ensure shell scripts conform to shellcheck. +# https://www.shellcheck.net/ + +readonly DEBUG=${DEBUG:-unset} +if [ "${DEBUG}" != unset ]; then + set -x +fi + +shellcheck "$@" diff --git a/hooks/shfmt.sh b/hooks/shfmt.sh new file mode 100644 index 0000000..b85eae3 --- /dev/null +++ b/hooks/shfmt.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Original: https://github.com/jumanjihouse/pre-commit-hooks#shfmt +# Forked to change runtime to /usr/bin/env on win10 +set -eu + +readonly DEBUG=${DEBUG:-unset} +if [ "${DEBUG}" != unset ]; then + set -x +fi + +if ! command -v shfmt >/dev/null 2>&1; then + echo 'This check needs shfmt from https://github.com/mvdan/sh/releases' + exit 1 +fi + +readonly cmd="shfmt $*" +echo "[RUN] ${cmd}" +output="$(${cmd} 2>&1)" +readonly output + +if [ -n "${output}" ]; then + echo '[FAIL]' + echo + echo "${output}" + echo + echo 'The above files have style errors.' + echo 'Use "shfmt -d" option to show diff.' + echo 'Use "shfmt -w" option to write (autocorrect).' + exit 1 +else + echo '[PASS]' +fi From a9c278ee78b5577628f8b8adcb278b4688a783aa Mon Sep 17 00:00:00 2001 From: Chase Hutchins Date: Tue, 30 Apr 2019 05:50:01 -0600 Subject: [PATCH 02/15] chmod +x --- hooks/forbid-binary.sh | 0 hooks/go-mod-tidy.sh | 0 hooks/shellcheck.sh | 0 hooks/shfmt.sh | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 hooks/forbid-binary.sh mode change 100644 => 100755 hooks/go-mod-tidy.sh mode change 100644 => 100755 hooks/shellcheck.sh mode change 100644 => 100755 hooks/shfmt.sh diff --git a/hooks/forbid-binary.sh b/hooks/forbid-binary.sh old mode 100644 new mode 100755 diff --git a/hooks/go-mod-tidy.sh b/hooks/go-mod-tidy.sh old mode 100644 new mode 100755 diff --git a/hooks/shellcheck.sh b/hooks/shellcheck.sh old mode 100644 new mode 100755 diff --git a/hooks/shfmt.sh b/hooks/shfmt.sh old mode 100644 new mode 100755 From a849e6ec427d52173c9723d3ef78866c71edbead Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 05:58:12 -0600 Subject: [PATCH 03/15] add social-preview to docs --- README.md | 2 +- docs/social-preview.png | Bin 0 -> 16734 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/social-preview.png diff --git a/README.md b/README.md index d9b7f07..dc0bafc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# git-hooks +# ![git-hooks](./docs/social-preview.png) [pre-commit]: https://pre-commit.com/ diff --git a/docs/social-preview.png b/docs/social-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..c87bd23c41b62186b04c104a92de09ca0de3e89d GIT binary patch literal 16734 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 Date: Tue, 30 Apr 2019 06:13:51 -0600 Subject: [PATCH 04/15] hack python into the go container --- .circleci/config.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ee75c74..320bf32 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,8 +6,12 @@ jobs: docker: - image: circleci/golang steps: + - run: go get -u mvdan.cc/sh/cmd/shfmt + - run: sudo apt-get -y install shellcheck - run: | - sudo apt-get update - sudo apt-get -y install shellcheck shfmt - - run: pip install pre-commit + export PATH=$PATH:/home/circleci/.local/bin + sudo apt-get -y install python3 + wget -O get-pip.py 'https://bootstrap.pypa.io/get-pip.py' + python3 get-pip.py --disable-pip-version-check --no-cache-dir pip==19.1 --user + - run: pip install pre-commit --user - run: pre-commit install From 31dcefff6c7d968d8ffa65dd37db681b87b72f6a Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:18:10 -0600 Subject: [PATCH 05/15] start with python, install go with apt --- .circleci/config.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 320bf32..7ce027c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,14 +4,10 @@ jobs: build: docker: - - image: circleci/golang + - image: circleci/python steps: + - run: sudo apt-get -y install golang - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck - - run: | - export PATH=$PATH:/home/circleci/.local/bin - sudo apt-get -y install python3 - wget -O get-pip.py 'https://bootstrap.pypa.io/get-pip.py' - python3 get-pip.py --disable-pip-version-check --no-cache-dir pip==19.1 --user - - run: pip install pre-commit --user + - run: pip install pre-commit - run: pre-commit install From 3297d67bca89649983c36655118ea6e2105b6a32 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:19:43 -0600 Subject: [PATCH 06/15] export GOPATH --- .circleci/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7ce027c..cf13b66 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,7 +5,10 @@ jobs: build: docker: - image: circleci/python + environment: + GOPATH: ~/go steps: + - run: mkdir -p $GOPATH - run: sudo apt-get -y install golang - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck From 85d9e9321c85f865079f85eb01781fc7e289fd7b Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:22:23 -0600 Subject: [PATCH 07/15] use $HOME maybe? --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cf13b66..0becf25 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,9 +6,9 @@ jobs: docker: - image: circleci/python environment: - GOPATH: ~/go + GOPATH: $HOME/go steps: - - run: mkdir -p $GOPATH + - run: mkdir -p $GOPATH && export PATH=$PATH:$GOPATH/bin - run: sudo apt-get -y install golang - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck From 0ef24ae263c5fbdd7ecb635594bb983ed03b7c0c Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:23:32 -0600 Subject: [PATCH 08/15] realpath then! --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0becf25..7658d20 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,9 +5,8 @@ jobs: build: docker: - image: circleci/python - environment: - GOPATH: $HOME/go steps: + - run: export GOPATH=$(realpath $HOME/go) - run: mkdir -p $GOPATH && export PATH=$PATH:$GOPATH/bin - run: sudo apt-get -y install golang - run: go get -u mvdan.cc/sh/cmd/shfmt From bdb505c9e599083fed50dec59b0d0b6cd43b9932 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:24:51 -0600 Subject: [PATCH 09/15] change order? --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7658d20..46363cd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,9 +6,8 @@ jobs: docker: - image: circleci/python steps: - - run: export GOPATH=$(realpath $HOME/go) - - run: mkdir -p $GOPATH && export PATH=$PATH:$GOPATH/bin - run: sudo apt-get -y install golang + - run: mkdir -p $GOPATH && export PATH=$PATH:$GOPATH/bin - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck - run: pip install pre-commit From 34ff5fb18cbed1d9b47ba0badf0ac92b9618a015 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:26:04 -0600 Subject: [PATCH 10/15] fixing deletion --- .circleci/config.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 46363cd..a160786 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,8 +6,12 @@ jobs: docker: - image: circleci/python steps: - - run: sudo apt-get -y install golang - - run: mkdir -p $GOPATH && export PATH=$PATH:$GOPATH/bin + - run: | + sudo apt-get -y install golang + export GOPATH=$HOME/go + mkdir -p $GOPATH + export PATH=$PATH:$GOPATH/bin + - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck - run: pip install pre-commit From 43a792bc243efedccbf0b567d658df0f8c638073 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:37:04 -0600 Subject: [PATCH 11/15] try some gomod black magic --- .circleci/config.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a160786..9f6b92d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,12 +7,18 @@ jobs: - image: circleci/python steps: - run: | - sudo apt-get -y install golang - export GOPATH=$HOME/go - mkdir -p $GOPATH - export PATH=$PATH:$GOPATH/bin - - - run: go get -u mvdan.cc/sh/cmd/shfmt + cd /tmp && wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz + sudo tar -xvf go1.11.linux-amd64.tar.gz + sudo mv go /usr/local + - run: | + echo 'export GOROOT=/usr/local/go' >> ~/.profile + echo "export GOPATH=$(realpath $HOME/go)" >> ~/.profile + echo 'export PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.profile + source ~/.profile + - run: | + cd $(mktemp -d) + go mod init tmp + go get mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install shellcheck - run: pip install pre-commit - run: pre-commit install From f096399841feddc98cdc38544e0be1475df95256 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:38:26 -0600 Subject: [PATCH 12/15] C:/Program Files/Git/usr/local/bin --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9f6b92d..9a7b81a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,7 +9,7 @@ jobs: - run: | cd /tmp && wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz sudo tar -xvf go1.11.linux-amd64.tar.gz - sudo mv go /usr/local + sudo mv go /usr/local/bin - run: | echo 'export GOROOT=/usr/local/go' >> ~/.profile echo "export GOPATH=$(realpath $HOME/go)" >> ~/.profile From 4dcbf46fd88708650aa913008e5fbeb7c51de7a1 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:40:16 -0600 Subject: [PATCH 13/15] elavate the variables --- .circleci/config.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9a7b81a..939f084 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,16 +5,15 @@ jobs: build: docker: - image: circleci/python + environment: + GOROOT: /usr/local/go + GOPATH: /home/circleci/go steps: + - run: export PATH=$GOPATH/bin:$GOROOT/bin:$PATH - run: | cd /tmp && wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz sudo tar -xvf go1.11.linux-amd64.tar.gz sudo mv go /usr/local/bin - - run: | - echo 'export GOROOT=/usr/local/go' >> ~/.profile - echo "export GOPATH=$(realpath $HOME/go)" >> ~/.profile - echo 'export PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.profile - source ~/.profile - run: | cd $(mktemp -d) go mod init tmp From 558da04ac63dcab1214e0b89d641372677a4964c Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:46:49 -0600 Subject: [PATCH 14/15] just use sudo, screw it --- .circleci/config.yml | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 939f084..173f561 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,20 +4,9 @@ jobs: build: docker: - - image: circleci/python - environment: - GOROOT: /usr/local/go - GOPATH: /home/circleci/go + - image: circleci/golang steps: - - run: export PATH=$GOPATH/bin:$GOROOT/bin:$PATH - - run: | - cd /tmp && wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz - sudo tar -xvf go1.11.linux-amd64.tar.gz - sudo mv go /usr/local/bin - - run: | - cd $(mktemp -d) - go mod init tmp - go get mvdan.cc/sh/cmd/shfmt - - run: sudo apt-get -y install shellcheck - - run: pip install pre-commit + - run: go get -u mvdan.cc/sh/cmd/shfmt + - run: sudo apt-get -y install python-pip + - run: sudo pip install pre-commit - run: pre-commit install From 1fa5fdcd138165d72d4f9c6ec71ac9a6262de138 Mon Sep 17 00:00:00 2001 From: Chase Pierce Date: Tue, 30 Apr 2019 06:48:18 -0600 Subject: [PATCH 15/15] add checkout step --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 173f561..05d12f0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,6 +6,7 @@ jobs: docker: - image: circleci/golang steps: + - checkout - run: go get -u mvdan.cc/sh/cmd/shfmt - run: sudo apt-get -y install python-pip - run: sudo pip install pre-commit