#!/bin/bash _cleanup(){ rm -rf dist shellcheck || true } build_linux() { # Linux Docker image name="$DOCKER_BASE" DOCKER_BUILDS="$DOCKER_BUILDS $name" docker build -t "$name:current" . docker run "$name:current" --version printf '%s\n' "#!/bin/sh" "echo 'hello world'" > myscript docker run -v "$PWD:/mnt" "$name:current" myscript # Copy static executable from docker image id=$(docker create "$name:current") docker cp "$id:/bin/shellcheck" "shellcheck" docker rm "$id" ls -l shellcheck ./shellcheck myscript for tag in $TAGS do cp "shellcheck" "deploy/shellcheck-$tag.linux-x86_64"; done # Linux Alpine based Docker image name="$DOCKER_BASE-alpine" DOCKER_BUILDS="$DOCKER_BUILDS $name" sed -e '/DELETE-MARKER/,$d' Dockerfile > Dockerfile.alpine docker build -f Dockerfile.alpine -t "$name:current" . docker run "$name:current" sh -c 'shellcheck --version' _cleanup } build_aarch64() { # Linux aarch64 static executable docker run -v "$PWD:/mnt" koalaman/aarch64-builder 'buildsc' for tag in $TAGS do cp "shellcheck" "deploy/shellcheck-$tag.linux-aarch64" done } build_armv6hf() { # Linux armv6hf static executable docker run -v "$PWD:/mnt" koalaman/armv6hf-builder -c 'compile-shellcheck' for tag in $TAGS do cp "shellcheck" "deploy/shellcheck-$tag.linux-armv6hf"; done _cleanup } build_windows() { # Windows .exe docker run --user="$UID" -v "$PWD:/appdata" koalaman/winghc cuib for tag in $TAGS do cp "dist/build/ShellCheck/shellcheck.exe" "deploy/shellcheck-$tag.exe"; done _cleanup } build_osx() { # Darwin x86_64 static executable brew install cabal-install pandoc gnu-tar sudo ln -s /usr/local/bin/gsha512sum /usr/local/bin/sha512sum sudo ln -s /usr/local/bin/gtar /usr/local/bin/tar export PATH="/usr/local/bin:$PATH" cabal update cabal install --dependencies-only cabal build shellcheck for tag in $TAGS do cp "dist/build/shellcheck/shellcheck" "deploy/shellcheck-$tag.darwin-x86_64"; done _cleanup }