Allow running this repo as a pre-commit hook
This commit is contained in:
parent
081f7eba24
commit
9d64d78c32
|
@ -1,6 +1,3 @@
|
||||||
*
|
dist
|
||||||
!LICENSE
|
dist-newstyle
|
||||||
!Setup.hs
|
.git
|
||||||
!ShellCheck.cabal
|
|
||||||
!shellcheck.hs
|
|
||||||
!src
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
- id: shellcheck
|
||||||
|
name: shellcheck
|
||||||
|
description: Static analysis tool for shell scripts
|
||||||
|
types: [shell]
|
||||||
|
language: docker
|
||||||
|
entry: shellcheck
|
|
@ -0,0 +1,18 @@
|
||||||
|
# This file builds ShellCheck for pre-commit.
|
||||||
|
#
|
||||||
|
# It may also be useful for local development, but it is notably NOT
|
||||||
|
# used to build the official ShellCheck docker images.
|
||||||
|
|
||||||
|
FROM ubuntu:20.04
|
||||||
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y cabal-install
|
||||||
|
RUN cabal update
|
||||||
|
|
||||||
|
# Install dependencies separately for more efficient iteration
|
||||||
|
COPY ShellCheck.cabal /build/
|
||||||
|
RUN cd /build && cabal install --dependencies-only
|
||||||
|
|
||||||
|
# Now build the rest
|
||||||
|
COPY . /build/
|
||||||
|
RUN cd /build && cabal build shellcheck
|
||||||
|
RUN find /build -type f -name shellcheck -perm /111 -exec cp -f {} /bin \;
|
||||||
|
ENTRYPOINT ["/bin/shellcheck"]
|
|
@ -1,6 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# This script runs 'buildtest' on each of several distros
|
# This script runs 'buildtest' on each of several distros
|
||||||
# via Docker.
|
# via Docker.
|
||||||
|
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
exec 3>&1 4>&2
|
exec 3>&1 4>&2
|
||||||
|
@ -32,6 +35,33 @@ echo "Logging to $log" >&3
|
||||||
exec >> "$log" 2>&1
|
exec >> "$log" 2>&1
|
||||||
|
|
||||||
final=0
|
final=0
|
||||||
|
|
||||||
|
echo "Trying to build pre-commit docker image"
|
||||||
|
if ! docker build --tag precommit .
|
||||||
|
then
|
||||||
|
final=1
|
||||||
|
echo "pre-commit image failed to build"
|
||||||
|
else
|
||||||
|
if printf '%s\n' '#!/bin/sh' 'echo $1' | docker run -i precommit -
|
||||||
|
then
|
||||||
|
final=1
|
||||||
|
echo "pre-commit image succeeds with incorrect example"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! printf '%s\n' '#!/bin/sh' 'echo "$1"' | docker run -i precommit -
|
||||||
|
then
|
||||||
|
final=1
|
||||||
|
echo "pre-commit image fails with correct example"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $final -ne 0 ]]
|
||||||
|
then
|
||||||
|
echo >&3 "pre-commit image failure, see log"
|
||||||
|
else
|
||||||
|
echo >&3 "pre-commit image succeeded"
|
||||||
|
fi
|
||||||
|
|
||||||
while read -r distro setup
|
while read -r distro setup
|
||||||
do
|
do
|
||||||
[[ "$distro" = "#"* || -z "$distro" ]] && continue
|
[[ "$distro" = "#"* || -z "$distro" ]] && continue
|
||||||
|
|
Loading…
Reference in New Issue