100 lines
2.0 KiB
Bash
Executable File
100 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
set -eu
|
||
|
||
prefix=/usr/local
|
||
|
||
usage() {
|
||
echo "Usage: ./configure [OPTION]"
|
||
echo
|
||
echo "Configuration:"
|
||
echo " -h, --help display this help and exit"
|
||
echo
|
||
echo "Installation directories:"
|
||
echo " --prefix=PREFIX install architecture-independent files in PREFIX [$prefix]"
|
||
}
|
||
|
||
|
||
# -allow a command to fail with !’s side effect on errexit
|
||
# -use return value from ${PIPESTATUS[0]}, because ! hosed $?
|
||
! getopt --test > /dev/null
|
||
if [[ ${PIPESTATUS[0]} -ne 4 ]]; then
|
||
echo 'getopt not available'
|
||
exit 1
|
||
fi
|
||
|
||
LONGOPTS=prefix:,help
|
||
OPTIONS=h
|
||
|
||
! PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTS --name "$0" -- "$@")
|
||
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||
# e.g. return value is 1
|
||
# then getopt has complained about wrong arguments to stdout
|
||
exit 2
|
||
fi
|
||
|
||
# read getopt’s output this way to handle the quoting right:
|
||
eval set -- "$PARSED"
|
||
|
||
while true; do
|
||
case "$1" in
|
||
--prefix)
|
||
prefix="$2"
|
||
shift 2
|
||
;;
|
||
-h|--help)
|
||
usage
|
||
exit 1
|
||
;;
|
||
--)
|
||
shift
|
||
break
|
||
;;
|
||
*)
|
||
echo "Programming error"
|
||
exit 3
|
||
;;
|
||
esac
|
||
done
|
||
|
||
cat << EOF > config.mk
|
||
# this file is autogenerated by ./configure
|
||
prefix=$prefix
|
||
EOF
|
||
|
||
node_version=$(node --version)
|
||
if [ ! "$?" -eq 0 ]; then
|
||
echo 'Error: node executable not found.'
|
||
echo 'If you are using ubuntu or debian, try installing the'
|
||
echo 'node-legacy package or symlink node to nodejs.'
|
||
exit 1
|
||
fi
|
||
echo "Using node ${node_version}"
|
||
|
||
if ! node -p 'process.exit(!(/v([0-9]+)/.exec(process.version)[1] >= 4))'; then
|
||
echo 'Your node version is too old, use something >v4.x.x'
|
||
exit 1
|
||
fi
|
||
|
||
if ! yarn --version &>/dev/null; then
|
||
echo 'Error: yarn missing. See https://yarnpkg.com/en/docs/install'
|
||
exit 1
|
||
fi
|
||
|
||
if ! find --version &>/dev/null; then
|
||
echo 'Error: find missing'
|
||
exit 1
|
||
fi
|
||
|
||
if ! xargs --version &>/dev/null; then
|
||
echo 'Error: xargs missing'
|
||
exit 1
|
||
fi
|
||
|
||
if ! msgmerge --version &>/dev/null; then
|
||
echo "Warning: msgmerge missing, i18n won't work"
|
||
exit 1
|
||
fi
|
||
|
||
|