composer - new seq to install composer locally or globally
This commit is contained in:
122
seqs/composer.sh
Executable file
122
seqs/composer.sh
Executable file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/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() {
|
||||||
|
echoinfoArgs "[OPTIONS] [VERSION]"
|
||||||
|
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_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
|
Reference in New Issue
Block a user