2022-08-01 06:22:17 +03:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
color() {
|
|
|
|
fg="$1"
|
|
|
|
bg="${2}"
|
|
|
|
ft="${3:-0}"
|
|
|
|
|
|
|
|
printf "\33[%s;%s;%s" "$ft" "$fg" "$bg"
|
|
|
|
}
|
|
|
|
|
|
|
|
color_reset() {
|
|
|
|
printf "\033[0m"
|
|
|
|
}
|
|
|
|
|
|
|
|
ok() {
|
|
|
|
if [ -t 1 ]; then
|
|
|
|
printf "%s[ OK ]%s\n" "$(color 37 42m 1)" "$(color_reset)"
|
|
|
|
else
|
|
|
|
printf "%s\n" "[ OK ]"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
err() {
|
|
|
|
if [ -t 1 ]; then
|
|
|
|
printf "%s[ ERR ]%s\n" "$(color 37 41m 1)" "$(color_reset)"
|
|
|
|
else
|
|
|
|
printf "%s\n" "[ ERR ]"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
run() {
|
|
|
|
retval=0
|
|
|
|
logfile="$(mktemp -t "run-XXXXXX")"
|
|
|
|
if "$@" 2> "$logfile"; then
|
|
|
|
ok
|
|
|
|
else
|
|
|
|
retval=$?
|
|
|
|
err
|
|
|
|
cat "$logfile" || true
|
|
|
|
fi
|
|
|
|
rm -rf "$logfile"
|
|
|
|
return $retval
|
|
|
|
}
|
|
|
|
|
|
|
|
progress() {
|
|
|
|
printf "%-40s" "$(printf "%s ... " "$1")"
|
|
|
|
}
|
|
|
|
|
|
|
|
log() {
|
|
|
|
printf "%s\n" "$1"
|
|
|
|
}
|
|
|
|
|
|
|
|
log2() {
|
|
|
|
printf "%s\n" "$1" 1>&2
|
|
|
|
}
|
|
|
|
|
|
|
|
error() {
|
|
|
|
log "ERROR: ${1}"
|
|
|
|
}
|
|
|
|
|
|
|
|
fail() {
|
|
|
|
log "FATAL: ${1}"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
check_goversion() {
|
|
|
|
progress "Checking Go version"
|
|
|
|
|
|
|
|
if ! command -v go > /dev/null 2>&1; then
|
|
|
|
log2 "Cannot find the Go compiler"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
2023-02-14 01:09:12 +03:00
|
|
|
gover=$(go version | sed -E 's/.*go([0-9]+\.[0-9]+(\.[0-9]+)?).*/\1/')
|
|
|
|
major=$(echo $gover | cut -d. -f1)
|
|
|
|
minor=$(echo $gover | cut -d. -f2)
|
|
|
|
patch=$(echo $gover | cut -d. -f3)
|
2022-08-01 06:22:17 +03:00
|
|
|
|
2023-02-14 01:09:12 +03:00
|
|
|
if [ "$major" -lt "1" ] || [ "$major" -eq "1" -a "$minor" -lt "17" ] ; then
|
2022-08-01 06:22:17 +03:00
|
|
|
log2 "Go 1.17+ is required, found ${gover}"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
check_path() {
|
|
|
|
progress "Checking \$PATH"
|
|
|
|
|
|
|
|
gobin="$(eval "$(go env | grep GOBIN)")"
|
|
|
|
gopath="$(eval "$(go env | grep GOPATH)")"
|
|
|
|
|
|
|
|
if [ -n "$gobin" ] && ! echo "$PATH" | grep "$gobin" > /dev/null; then
|
|
|
|
log2 "\$GOBIN '$gobin' is not in your \$PATH"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "$gopath" ] && ! echo "$PATH" | grep "$gopath/bin" > /dev/null; then
|
|
|
|
log2 "\$GOPATH/bin '$gopath/bin' is not in your \$PATH"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if ! echo "$PATH" | grep "$HOME/go/bin" > /dev/null; then
|
|
|
|
log2 "\$HOME/go/bin is not in your \$PATH"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
check_deps() {
|
|
|
|
progress "Checking deps"
|
|
|
|
|
|
|
|
if ! command -v ffmpeg > /dev/null 2>&1; then
|
|
|
|
log2 "ffmpeg not found, Please install it using your OS package manager"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
steps="check_goversion check_path check_deps"
|
|
|
|
|
|
|
|
_main() {
|
|
|
|
for step in $steps; do
|
|
|
|
if ! run "$step"; then
|
|
|
|
fail "🙁 preflight failed"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
log "🥳 All Done! Ready to build, run: make build"
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ -n "$0" ] && [ x"$0" != x"-bash" ]; then
|
|
|
|
_main "$@"
|
|
|
|
fi
|