mirror of
https://github.com/koalaman/shellcheck.git
synced 2024-12-03 19:00:42 -08:00
49 lines
1.2 KiB
Bash
49 lines
1.2 KiB
Bash
#!/bin/dash
|
|
# Various ShellCheck build utility functions
|
|
|
|
# Generally set a ulimit to avoid QEmu using too much memory
|
|
ulimit -v "$((10*1024*1024))"
|
|
# If we happen to invoke or run under QEmu, make sure to follow execve.
|
|
# This requires a patched QEmu.
|
|
export QEMU_EXECVE=1
|
|
|
|
# Retry a command until it succeeds
|
|
# Usage: scutil retry 3 mycmd
|
|
retry() {
|
|
n="$1"
|
|
ret=1
|
|
shift
|
|
while [ "$n" -gt 0 ]
|
|
do
|
|
"$@"
|
|
ret=$?
|
|
[ "$ret" = 0 ] && break
|
|
n=$((n-1))
|
|
done
|
|
return "$ret"
|
|
}
|
|
|
|
# Install all dependencies from a freeze file
|
|
# Usage: scutil install_from_freeze /path/cabal.project.freeze cabal install
|
|
install_from_freeze() {
|
|
linefeed=$(printf '\nx')
|
|
linefeed=${linefeed%x}
|
|
flags=$(
|
|
sed 's/constraints:/&\n /' "$1" |
|
|
grep -vw -e rts -e base |
|
|
sed -n -e 's/^ *\([^,]*\).*/\1/p' |
|
|
sed -e 's/any\.\([^ ]*\) ==\(.*\)/\1-\2/; te; s/.*/--constraint\n&/; :e')
|
|
shift
|
|
# shellcheck disable=SC2086
|
|
( IFS=$linefeed; set -x; "$@" $flags )
|
|
}
|
|
|
|
# Run a command under emulation.
|
|
# This assumes the correct emulator is named 'qemu' and the chroot is /chroot
|
|
# Usage: scutil emu echo "Hello World"
|
|
emu() {
|
|
chroot /chroot /bin/qemu /usr/bin/env "$@"
|
|
}
|
|
|
|
"$@"
|