mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-09-16 09:44:08 +07:00
Refactor scripts
This commit is contained in:
@ -27,14 +27,27 @@ update_ppa() {
|
||||
configure_pecl() {
|
||||
if [ "$pecl_config" = "false" ] && [ -e /usr/bin/pecl ]; then
|
||||
for tool in pear pecl; do
|
||||
sudo $tool config-set php_ini "$ini_file" >/dev/null 2>&1
|
||||
sudo $tool config-set auto_discover 1 >/dev/null 2>&1
|
||||
sudo $tool channel-update $tool.php.net >/dev/null 2>&1
|
||||
sudo "$tool" config-set php_ini "$ini_file" >/dev/null 2>&1
|
||||
sudo "$tool" config-set auto_discover 1 >/dev/null 2>&1
|
||||
sudo "$tool" channel-update "$tool".php.net >/dev/null 2>&1
|
||||
done
|
||||
pecl_config="true"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fuction to get the PECL version
|
||||
get_pecl_version() {
|
||||
extension=$1
|
||||
stability=$2
|
||||
pecl_rest='https://pecl.php.net/rest/r/'
|
||||
response=$(curl -q -sSL "$pecl_rest$extension"/allreleases.xml)
|
||||
pecl_version=$(echo "$response" | grep -m 1 -Po "(\d*\.\d*\.\d*$stability\d*)")
|
||||
if [ ! "$pecl_version" ]; then
|
||||
pecl_version=$(echo "$response" | grep -m 1 -Po "(\d*\.\d*\.\d*)")
|
||||
fi
|
||||
echo "$pecl_version"
|
||||
}
|
||||
|
||||
# Function to setup extensions
|
||||
add_extension() {
|
||||
extension=$1
|
||||
@ -53,25 +66,57 @@ add_extension() {
|
||||
sudo chmod 777 "$ini_file"
|
||||
}
|
||||
|
||||
# Function to force install extensions using PECL
|
||||
install_extension() {
|
||||
# Function to delete extensions
|
||||
delete_extension() {
|
||||
extension=$1
|
||||
extension_name="$(echo "$extension" | cut -d'-' -f 1)"
|
||||
sudo sed -i "/$extension_name/d" "$ini_file"
|
||||
sudo rm -rf /etc/php/"$version"/cli/conf.d/*"$extension_name"* >/dev/null 2>&1
|
||||
sudo rm -rf "$ext_dir"/"$extension_name".so >/dev/null 2>&1
|
||||
sudo pecl install -f "$extension" >/dev/null 2>&1
|
||||
sudo sed -i "/$extension/d" "$ini_file"
|
||||
sudo rm -rf /etc/php/"$version"/cli/conf.d/*"$extension"* >/dev/null 2>&1
|
||||
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Function to remove extensions
|
||||
# Function to disable and delete extensions
|
||||
remove_extension() {
|
||||
extension=$1
|
||||
if [ -e /etc/php/"$version"/mods-available/"$extension".ini ]; then
|
||||
sudo phpdismod -v "$version" "$extension"
|
||||
fi
|
||||
sudo sed -i "/$extension/d" "$ini_file"
|
||||
sudo rm -rf /etc/php/"$version"/cli/conf.d/*"$extension"* >/dev/null 2>&1
|
||||
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
||||
delete_extension "$extension"
|
||||
}
|
||||
|
||||
# Function to install a PECL version
|
||||
add_pecl_extension() {
|
||||
extension=$1
|
||||
pecl_version=$2
|
||||
(sudo pecl install -f "$extension-$pecl_version" >/dev/null 2>&1 &&
|
||||
add_log "$tick" "$extension" "Installed and enabled") ||
|
||||
add_log "$cross" "$extension" "Could not install $extension-$pecl_version on PHP $semver"
|
||||
}
|
||||
|
||||
# Function to pre-release extensions using PECL
|
||||
add_unstable_extension() {
|
||||
extension=$1
|
||||
stability=$2
|
||||
prefix=$3
|
||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
||||
if ! php -m | grep -i -q -w "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
||||
extension_version=$(php -d="$prefix=$extension" -r "echo phpversion('$extension');")
|
||||
if [ "$extension_version" = "$pecl_version" ]; then
|
||||
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
||||
else
|
||||
delete_extension "$extension"
|
||||
add_pecl_extension "$extension" "$pecl_version"
|
||||
fi
|
||||
elif php -m | grep -i -q -w "$extension"; then
|
||||
extension_version=$(php -r "echo phpversion('$extension');")
|
||||
if [ "$extension_version" = "$pecl_version" ]; then
|
||||
add_log "$tick" "$extension" "Enabled"
|
||||
else
|
||||
delete_extension "$extension"
|
||||
add_pecl_extension "$extension" "$pecl_version"
|
||||
fi
|
||||
else
|
||||
add_pecl_extension "$extension" "$pecl_version"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to update extension
|
||||
@ -99,28 +144,28 @@ add_tool() {
|
||||
status_code=$(sudo curl -s -w "%{http_code}" -o /usr/local/bin/"$tool" -L "$url")
|
||||
if [ "$status_code" = "200" ]; then
|
||||
sudo chmod a+x /usr/local/bin/"$tool"
|
||||
if [ "$tool" = "composer" ]; then
|
||||
composer -q global config process-timeout 0
|
||||
elif [ "$tool" = "phive" ]; then
|
||||
add_extension curl >/dev/null 2>&1
|
||||
add_extension mbstring >/dev/null 2>&1
|
||||
add_extension xml >/dev/null 2>&1
|
||||
fi
|
||||
add_log "$tick" "$tool" "Added"
|
||||
else
|
||||
add_log "$cross" "$tool" "Could not setup $tool"
|
||||
fi
|
||||
if [ "$tool" = "composer" ]; then
|
||||
composer -q global config process-timeout 0
|
||||
fi
|
||||
if [ "$tool" = "phive" ]; then
|
||||
add_extension curl >/dev/null 2>&1
|
||||
add_extension mbstring >/dev/null 2>&1
|
||||
add_extension xml >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup a tool using composer
|
||||
add_composer_tool() {
|
||||
tool=$1
|
||||
release=$2
|
||||
prefix=$3
|
||||
(
|
||||
composer global require "$prefix$release" >/dev/null 2>&1 && \
|
||||
sudo ln -sf "$(composer -q global config home)"/vendor/bin/"$tool" /usr/local/bin/"$tool" && \
|
||||
add_log "$tick" "$tool" "Added"
|
||||
composer global require "$prefix$release" >/dev/null 2>&1 &&
|
||||
sudo ln -sf "$(composer -q global config home)"/vendor/bin/"$tool" /usr/local/bin/"$tool" &&
|
||||
add_log "$tick" "$tool" "Added"
|
||||
) || add_log "$cross" "$tool" "Could not setup $tool"
|
||||
}
|
||||
|
||||
@ -150,7 +195,9 @@ setup_master() {
|
||||
# Function to setup PECL
|
||||
add_pecl() {
|
||||
add_devtools
|
||||
$apt_install php-pear >/dev/null 2>&1
|
||||
if [ ! -e /usr/bin/pecl ]; then
|
||||
$apt_install php-pear >/dev/null 2>&1
|
||||
fi
|
||||
configure_pecl
|
||||
add_log "$tick" "PECL" "Added"
|
||||
}
|
||||
@ -172,7 +219,6 @@ pecl_config="false"
|
||||
version=$1
|
||||
apt_install="sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y"
|
||||
existing_version=$(php-config --version | cut -c 1-3)
|
||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
||||
|
||||
# Setup PHP
|
||||
step_log "Setup PHP"
|
||||
@ -182,9 +228,7 @@ sudo mkdir -p /run/php
|
||||
if [ "$existing_version" != "$version" ]; then
|
||||
if [ ! -e "/usr/bin/php$version" ]; then
|
||||
update_ppa
|
||||
if [ "$version" = "7.4" ]; then
|
||||
$apt_install php"$version" php"$version"-curl php"$version"-mbstring php"$version"-xml php"$version"-phpdbg >/dev/null 2>&1
|
||||
elif [ "$version" = "8.0" ]; then
|
||||
if [ "$version" = "8.0" ]; then
|
||||
setup_master
|
||||
else
|
||||
$apt_install php"$version" php"$version"-curl php"$version"-mbstring php"$version"-xml >/dev/null 2>&1
|
||||
@ -196,9 +240,10 @@ if [ "$existing_version" != "$version" ]; then
|
||||
|
||||
switch_version
|
||||
|
||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
||||
if [ "$version" = "8.0" ]; then
|
||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
|
||||
else
|
||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
||||
fi
|
||||
|
||||
if [ "$status" != "switched" ]; then
|
||||
@ -207,6 +252,7 @@ if [ "$existing_version" != "$version" ]; then
|
||||
status="Switched to PHP $semver"
|
||||
fi
|
||||
else
|
||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
||||
status="PHP $semver Found"
|
||||
fi
|
||||
|
||||
|
Reference in New Issue
Block a user