wip3
This commit is contained in:
+97
-28
@@ -1,38 +1,107 @@
|
||||
#!/usr/bin/env bash
|
||||
##makedesc: Install composer (latest)
|
||||
here=$( dirname $(readlink -e -- "${BASH_SOURCE}"))
|
||||
source "$here/../helpers.sh" || exit 255
|
||||
|
||||
# https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
|
||||
set -eo pipefail
|
||||
|
||||
title
|
||||
installed() { command -v "$1" >/dev/null 2>&1; }
|
||||
|
||||
require php
|
||||
warn() { echo "WARNING: $*" >&2; }
|
||||
|
||||
if installed composer; then
|
||||
warn "WARNING: Removing current composer to install latest one"
|
||||
composer --version
|
||||
__AAA_NO_TITLE=1 source $here/../uninstall/composer
|
||||
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}\""
|
||||
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
|
||||
export "$NEWPATH"
|
||||
echo "export $NEWPATH" >> "$HOME/.profile"
|
||||
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
|
||||
}
|
||||
|
||||
source "$HOME/.profile"
|
||||
download() {
|
||||
if installed wget; then
|
||||
wget -q --show-progress "$1" -O "$2"
|
||||
else
|
||||
curl -fsSL "$1" -o "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
success "composer installed!"
|
||||
composer --version
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user