108 lines
2.6 KiB
Bash
Executable File
108 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
##makedesc: Install composer (latest)
|
|
|
|
set -eo pipefail
|
|
|
|
installed() { command -v "$1" >/dev/null 2>&1; }
|
|
|
|
warn() { echo "WARNING: $*" >&2; }
|
|
|
|
require() {
|
|
local missing=()
|
|
for pkg in "$@"; do
|
|
installed "$pkg" || missing+=("$pkg")
|
|
done
|
|
if [ ${#missing[@]} -gt 0 ]; then
|
|
if [ "$(uname -s)" = "Darwin" ]; then
|
|
if installed brew; then
|
|
brew install "${missing[@]}"
|
|
else
|
|
echo "ERROR: Missing: ${missing[*]}. Install manually or use brew." >&2
|
|
exit 1
|
|
fi
|
|
else
|
|
sudo apt install -y "${missing[@]}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
download() {
|
|
if installed wget; then
|
|
wget -q --show-progress "$1" -O "$2"
|
|
else
|
|
curl -fsSL "$1" -o "$2"
|
|
fi
|
|
}
|
|
|
|
install() {
|
|
echo
|
|
echo "==============================================="
|
|
echo "Installing composer"
|
|
echo "==============================================="
|
|
echo
|
|
|
|
# https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
|
|
|
|
require php
|
|
|
|
if installed composer; then
|
|
warn "Removing current composer to install latest one"
|
|
composer --version
|
|
rm -f "$HOME/.local/bin/composer" /usr/local/bin/composer /usr/bin/composer 2>/dev/null || true
|
|
fi
|
|
|
|
mkdir -p "$HOME/install/other" "$HOME/.local/bin"
|
|
|
|
download "https://getcomposer.org/installer" \
|
|
"$HOME/install/other/composer-setup.php"
|
|
|
|
php "$HOME/install/other/composer-setup.php" \
|
|
--install-dir="$HOME/.local/bin/" \
|
|
--filename="composer"
|
|
|
|
COMPOSER_GLOBAL_HOME="$($HOME/.local/bin/composer config -g home)"
|
|
NEWPATH="PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
|
|
if ! grep -qoh "$NEWPATH" "$HOME/.profile" 2>/dev/null; then
|
|
export "$NEWPATH"
|
|
echo "export $NEWPATH" >> "$HOME/.profile"
|
|
fi
|
|
|
|
# shellcheck source=/dev/null
|
|
source "$HOME/.profile"
|
|
|
|
echo
|
|
echo "Finish!"
|
|
composer --version
|
|
echo
|
|
}
|
|
|
|
upgrade() {
|
|
install
|
|
}
|
|
|
|
remove() {
|
|
echo
|
|
echo "==============================================="
|
|
echo "Removing composer"
|
|
echo "==============================================="
|
|
echo
|
|
|
|
sudo apt remove -y --autoremove composer 2>/dev/null || true
|
|
rm -f \
|
|
"$HOME/.local/bin/composer" \
|
|
/bin/composer \
|
|
/usr/bin/composer \
|
|
/usr/local/bin/composer \
|
|
/usr/src/composer 2>/dev/null || true
|
|
|
|
echo
|
|
echo "Finish!"
|
|
echo
|
|
}
|
|
|
|
case "$1" in
|
|
u|upgrade|update) upgrade ;;
|
|
r|remove|d|delete|p|purge) remove ;;
|
|
*) install ;;
|
|
esac
|