Files
kymsu2/plugins.d/pecl.sh
Bruno 21 a32a0d6ded 5 scripts
+update colors strings
+update parameter ‘—nodistract’
2021-01-09 15:05:29 +01:00

140 lines
3.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# pecl plugin for KYMSU
# https://github.com/welcoMattic/kymsu
# https://pecl.php.net
#########################################
#
# Settings:
# No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false
#
#########################################
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
box="\033[1;41m"
reset="\033[0m"
notification() {
sound="Basso"
title="Homebrew"
#subtitle="Attention !!!"
message="$1"
image="error.png"
if [[ "$OSTYPE" == "darwin"* ]] && [ -x "$(command -v terminal-notifier)" ]; then
terminal-notifier -title "$title" -message "$message" -sound "$sound" -contentImage "$image"
fi
}
echo -e "${bold}🐘 pecl ${reset}"
echo ""
echo -e "${bold}❗️ plugin en test (beta) ${reset}"
echo ""
# /usr/local/Cellar/php/7.4.11/bin/pecl
# /usr/local/Cellar/php@7.3/7.3.23/bin/pecl
# /usr/local/Cellar/php@7.2/7.2.33/bin/pecl
#pecl_upgrade=$(pecl list-upgrades)
version=$(php --info | grep 'PHP Version' | sed -n '1p' | awk -F" " '{print $NF}')
v=${version:0:3}
if [ "$v" = "7.3" ]; then
php_path=$(brew --prefix)/opt/php@7.3/bin
elif [ "$v" = "7.2" ]; then
php_path=$(brew --prefix)/opt/php@7.2/bin
elif [ "$v" = "7.4" ]; then
php_path=$(brew --prefix)/opt/php/bin
fi
pecl_upgrade=$($php_path/pecl list-upgrades)
if [ -n "$pecl_upgrade" ]; then
echo -e "${underline}Extensions update:${reset}"
echo ""
echo "$pecl_upgrade"
echo ""
available=$(echo "$pecl_upgrade" | grep -v 'No upgrades available' | grep 'kB')
if [ -n "$available" ]; then
while read ligne
do
echo "$ligne"
# Channel pear.php.net
a=$(echo "$ligne" | grep "pear")
if [ -n "$a" ]; then
#pecl channel-update pear.php.net
$php_path/pecl channel-update pear.php.net
fi
# Channel pecl.php.net
b=$(echo "$ligne" | grep "pecl")
if [ -n "$b" ]; then
#pecl channel-update pecl.php.net
$php_path/pecl channel-update pecl.php.net
#(pecl or doc) update available
b=$(echo "$ligne" | awk '{print $2}')
#pecl info "$b"
$php_path/pecl info "$b"
echo ""
if [ "$no_distract" = false ]; then
#echo "$b" | xargs -p -n 1 pecl upgrade
echo "$b" | xargs -p -n 1 $php_path/pecl upgrade
else
#echo "$b" | xargs -n 1 pecl upgrade
echo "$b" | xargs -n 1 $php_path/pecl upgrade
fi
fi
echo ""
done <<< "$available"
fi
fi
# si modif des extensions, les .ini dans conf.d/ ne sont pas modifiés, juste le php.ini
# php.ini a été modifié il y a moins de 5mn
v_php=$(php --info | grep -E 'usr.*ini')
conf_php=$(echo "$v_php" | grep 'Loaded Configuration File' | awk '{print $NF}')
dir=$(dirname "$conf_php")
name=$(basename "$conf_php")
notif2="$conf_php was modified in the last 5 minutes"
test=$(find "$dir" -name "$name" -mmin -5 -maxdepth 1)
if [ -n "$test" ]; then
echo -e "${red}❗️ $notif2${reset}"
notification "$notif2"
echo ""
a=$(echo -e "Do you want to edit ${bold}$conf_php${reset} file ? (y/n)")
read -p "$a" choice
if [ "$choice" == "y" ]; then
$EDITOR "$conf_php"
fi
fi
echo ""
echo ""
# WARNING: channel "pear.php.net" has updated its protocols,
# use "pecl channel-update pear.php.net" to update