Files
shell_sequencer/seqs/composer.sh

123 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
readonly toolName=composer
# Already defined by sequencer.sh, but may be overwritten
#readonly seq_configName="${sq_scriptName:?}.cfg"
#readonly seq_configTemplate="${seq_origin:?}/${sq_configName:?}.example"
sq_aptOpt=
sq_config=0
sq_composerBin=
seq_config() {
# Apt cmdline option to suppress user interaction
interactive || sq_aptOpt="-y"
# Disable error checks if external scripts are used
# e.g. error on unbound variables
#disableErrorCheck
# Return of non zero value will abort the sequence
return 0
}
getComposer() {
local lLocalOnly=0
local lGlobalOnly=0
case "${1:-}" in
-l) lLocalOnly=1 ;;
-g) lGlobalOnly=1 ;;
esac
if [[ -n "${sq_composerBin:-}" ]] && [[ -z "${1:-}" ]] ; then
return 0
fi
local lComp=
if (( ! lGlobalOnly )) ; then
lComp="$(ls composer 2>>/dev/null)"
lComp="${lComp:-"$(ls composer.phar 2>>/dev/null)"}"
fi
if (( ! lLocalOnly )) ; then
lComp="${lComp:-"$(ls /usr/local/bin/composer 2>>/dev/null)"}"
fi
[[ -z "${lComp:-}" ]] && return 1
sq_composerBin="$(readlink -f -- "${lComp}")"
return 0
}
step_1_info() { echo "Determine status of ${toolName} in current directory or globally"; }
step_1_alias() { echo "status"; }
step_1() {
local lDir="$(pwd)"
local lComp
getComposer || die "No composer installed"
info "Composer found: ${sq_composerBin}"
info -a "$(COMPOSER_ALLOW_SUPERUSER=1 "${sq_composerBin}" --version)"
info "Available php versions:"
info -a "$(update-alternatives --list php)"
}
step_10_info() {
echo "Install ${toolName}"
echoinfo " [OPTIONS]"
echoinfo " -l: (default) install composer.phar to the current directory"
echoinfo " -g: install composer globally to /usr/local/bin"
echoinfo " [VERSION]"
echoinfo " Install this specific ${toolName} version"
}
step_10_options() { echo "[OPTIONS] [VERSION]"; }
step_10_alias() { echo "install"; }
step_10() {
shift
local lLocal=1
local lArgs=()
for _ in "${@}" ; do
case "${1:-}" in
-l) shift ;;
-g)
lLocal=0
lArgs+=(--install-dir="/usr/local/bin")
lArgs+=(--filename="composer")
shift ;;
--) shift && break ;;
-*) die "Unkown option ${1}" ;;
esac
done
local getArg="-l"
(( ! lLocal )) && getArg="-g"
getComposer ${getArg} && die "Composer already installed: ${sq_composerBin}"
[[ -n "${1:-}" ]] && lArgs+=(--version="${1}")
interactive || lArgs+=(--quiet)
info "Installing ${toolName}"
local checksum_expected="$(wget -q -O - https://composer.github.io/installer.sig)"
exe wget -O 'composer-setup.php' 'https://getcomposer.org/installer'
local checksum=($(sha384sum 'composer-setup.php'))
if [ "${checksum_expected}" != "${checksum}" ]
then
error -e 'Invalid installer checksum'
error -a "Sum: ${checksum}"
error -a "Exp: ${checksum_expected}"
exe rm composer-setup.php
return 1
fi
exe php composer-setup.php "${lArgs[@]}"
saveReturn $?
exe rm composer-setup.php
endReturn "Composer setup failed"
}
# shellcheck disable=SC2034 # Appears unused
readonly sqr_minVersion=16
# shellcheck disable=SC1091 # Don't follow this source
. /usr/local/bin/sequencer.sh