Allow running this repo as a pre-commit hook
This commit is contained in:
parent
081f7eba24
commit
9d64d78c32
|
@ -1,6 +1,3 @@
|
|||
*
|
||||
!LICENSE
|
||||
!Setup.hs
|
||||
!ShellCheck.cabal
|
||||
!shellcheck.hs
|
||||
!src
|
||||
dist
|
||||
dist-newstyle
|
||||
.git
|
||||
|
|
|
@ -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
|
||||
# This script runs 'buildtest' on each of several distros
|
||||
# via Docker.
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
|
||||
set -o pipefail
|
||||
|
||||
exec 3>&1 4>&2
|
||||
|
@ -32,6 +35,33 @@ echo "Logging to $log" >&3
|
|||
exec >> "$log" 2>&1
|
||||
|
||||
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
|
||||
do
|
||||
[[ "$distro" = "#"* || -z "$distro" ]] && continue
|
||||
|
|
Loading…
Reference in New Issue