Files
cache-extensions/src/extensions.sh
2020-02-29 16:08:48 +05:30

75 lines
2.4 KiB
Bash

linux_extension_dir() {
apiv=$1
old_versions_linux="5.[4-5]"
if [ "$version" = "5.3" ]; then
echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv"
elif [[ "$version" =~ $old_versions_linux ]]; then
echo "/usr/lib/php5/$apiv"
elif [ "$version" = "8.0" ]; then
echo "/home/runner/php/8.0/lib/php/extensions/no-debug-non-zts-$apiv"
else
echo "/usr/lib/php/$apiv"
fi
}
darwin_extension_dir() {
apiv=$1
old_versions_darwin="5.[3-5]"
if [[ "$version" =~ $old_versions_darwin ]]; then
echo "/usr/local/php5/lib/php/extensions/no-debug-non-zts-$apiv"
else
echo "/usr/local/lib/php/pecl/$apiv"
fi
}
get_apiv() {
case $version in
5.3) echo "20090626" ;;
5.4) echo "20100525" ;;
5.5) echo "20121212" ;;
5.6) echo "20131226" ;;
7.0) echo "20151012" ;;
7.1) echo "20160303" ;;
7.2) echo "20170718" ;;
7.3) echo "20180731" ;;
*)
if [ "$version" = "8.0" ]; then
php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h"
else
semver=$(curl -sSL --retry 5 https://github.com/php/php-src/releases | grep "$flags" "(php-$version.[0-9]+)".zip | head -n 1 | grep "$flags" '[0-9]+\.[0-9]+\.[0-9]+')
php_h="https://raw.githubusercontent.com/php/php-src/PHP-$semver/main/php.h"
fi
curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3
;;
esac
}
extensions=$1
key=$2
version=$3
os=$(uname -s)
if [ "$os" = "Linux" ]; then
os=$os-$(lsb_release -s -c)
flags='-Po'
apiv=$(get_apiv)
dir=$(linux_extension_dir "$apiv")
sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" "$(dirname "$dir")"
debconf_fix="DEBIAN_FRONTEND=noninteractive"
apt_install="sudo $debconf_fix apt-fast install -y"
IFS=' ' read -r -a extension_array <<< "${extensions//,/ }"
for extension in "${extension_array[@]}"; do
# shellcheck disable=SC2046
$apt_install $(apt-cache depends php"$version"-"$extension" 2>/dev/null | awk '/Depends:/{print$2}') >/dev/null 2>&1
done
elif [ "$os" = "Darwin" ]; then
flags='-Eo'
apiv=$(get_apiv)
dir=$(darwin_extension_dir "$apiv")
sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" "$(dirname "$dir")"
else
os="Windows"
dir='C:\\tools\\php\\ext'
fi
key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2)
echo "::set-output name=dir::$dir"
echo "::set-output name=key::$key"