#!/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 # # Display PHP informations display_info=true # Open PHP info in Safari php_info=true # ######################################### 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 "" version=$(php --info | grep 'PHP Version' | sed -n '1p' | awk -F" " '{print $NF}') v=${version:0:3} echo -e "Current PHP version: ${bold}$version${reset}\n" 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@7.4/bin elif [ "$v" = "8.0" ]; 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 php_info=true else #echo "$b" | xargs -n 1 pecl upgrade echo "$b" | xargs -n 1 $php_path/pecl upgrade php_info=true 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" if [ "$display_info" = true ]; then echo -e "php.ini path: ${bold}$conf_php${reset}" echo -e "Additionnals ini files:\n$(ls $dir/conf.d/*.ini)" echo -e "\nTo change php version: ${italic}$ sphp 7.4${reset}" echo -e "${italic}https://gist.github.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2${reset}\n" host=$(hostname) [ "$php_info" = true ] && echo -e "Opening PHP info in Safari..." && open "https://$host.local/info.php" fi test=$(find "$dir" -name "$name" -mmin -5 -maxdepth 1) if [ -n "$test" ]; then echo -e "${red}❗️ ️$notif2${reset}" notification "$notif2" echo "" if [ -n "$available" ]; then 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 fi echo "" echo "" # WARNING: channel "pear.php.net" has updated its protocols, # use "pecl channel-update pear.php.net" to update