homebrew.sh
-affichage des paquets ‘pinned’ -l’installation de jq (processeur json) est préconnisée
This commit is contained in:
@@ -56,14 +56,16 @@ echo ""
|
|||||||
|
|
||||||
# Pinned packages
|
# Pinned packages
|
||||||
|
|
||||||
brew_pinned=$(brew list --pinned)
|
brew_pinned=$(brew list --pinned | xargs)
|
||||||
|
#brew_pinned=`echo $brew_pinned | sed 's/ *$//g'`
|
||||||
|
#brew_pinned=`echo $brew_pinned | xargs`
|
||||||
|
|
||||||
if [ -n "$brew_pinned" ]; then
|
if [ -n "$brew_pinned" ]; then
|
||||||
|
|
||||||
echo -e "\033[4mList of pinned packages:\033[0m"
|
nbp=$(echo "$brew_pinned" | wc -w | xargs)
|
||||||
|
|
||||||
pinned=$(echo "$brew_pinned" | tr '\n' ' ')
|
echo -e "\033[4mList of\033[0m \033[1;41m $nbp \033[0m \033[4mpinned packages:\033[0m"
|
||||||
echo -e "\033[1;31m️$pinned\033[0m"
|
echo -e "\033[1;31m$brew_pinned\033[0m"
|
||||||
echo "To update a pinned package, you need to un-pin it manually (brew unpin <formula>)"
|
echo "To update a pinned package, you need to un-pin it manually (brew unpin <formula>)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
@@ -71,25 +73,72 @@ fi
|
|||||||
|
|
||||||
# A pinned package is in 'brew outdated'
|
# A pinned package is in 'brew outdated'
|
||||||
|
|
||||||
|
declare -A array_info
|
||||||
|
|
||||||
if [ -x "$(command -v jq)" ]; then
|
if [ -x "$(command -v jq)" ]; then
|
||||||
brew_outdated=$(brew outdated --json)
|
brew_outdated=$(brew outdated --json)
|
||||||
upd3=$(echo "$brew_outdated" )
|
upd_json=$(echo "$brew_outdated" )
|
||||||
|
|
||||||
|
for row in $(jq -c '.[]' <<< "$upd_json");
|
||||||
|
do
|
||||||
|
name=$(echo "$row" | jq -j '.name, "\n"');
|
||||||
|
upd3+="$name "
|
||||||
|
done
|
||||||
|
upd3=$(echo "$upd3" | sed 's/.$//')
|
||||||
|
|
||||||
|
# Only 1 request 'brew info' for all updated packages
|
||||||
|
info=$(brew info --json=v1 $upd3)
|
||||||
|
|
||||||
|
i=0
|
||||||
|
for row in $(echo "${info}" | jq -r '.[] | @base64');
|
||||||
|
do
|
||||||
|
_jq() {
|
||||||
|
echo ${row} | base64 --decode | jq -r ${1}
|
||||||
|
}
|
||||||
|
|
||||||
|
name=$(_jq '.name')
|
||||||
|
homepage=$(_jq '.homepage')
|
||||||
|
# encoding to base64 to prevent errors with some characters (')
|
||||||
|
desc=$(_jq '.desc' | base64 --break=0) # BSD: break=0 GNU: wrap=0
|
||||||
|
pinned=$(_jq '.pinned')
|
||||||
|
installed_v=$(_jq '.installed[].version')
|
||||||
|
stable=$(_jq '.versions.stable')
|
||||||
|
#linked=$(_jq '.linked_keg')
|
||||||
|
|
||||||
|
eval "declare -a array_info$i=($name $homepage $desc $pinned $installed_v $stable)"
|
||||||
|
|
||||||
|
((i++))
|
||||||
|
done
|
||||||
|
nb=$i
|
||||||
|
i=0
|
||||||
|
|
||||||
else
|
else
|
||||||
brew_outdated=$(brew outdated)
|
brew_outdated=$(brew outdated)
|
||||||
upd3=$(echo "$brew_outdated" | awk '{print $1}')
|
upd3=$(echo "$brew_outdated" | awk '{print $1}')
|
||||||
|
|
||||||
|
info=$(brew info $upd3)
|
||||||
|
for i in $upd3
|
||||||
|
do
|
||||||
|
a=$(grep -A 3 "$i: stable" <<< "$info")
|
||||||
|
array_info["$i"]="$a"
|
||||||
|
done
|
||||||
|
nb=${#array_info[@]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Get infos for all updated packages
|
||||||
|
|
||||||
if [ -n "$upd3" ]; then
|
if [ -n "$upd3" ]; then
|
||||||
|
|
||||||
# Display info on outdated packages
|
# Display info on outdated packages
|
||||||
|
|
||||||
if [ "$display_info" = true ]; then
|
if [ "$display_info" = true ]; then
|
||||||
echo -e "\033[4mInfo on updated packages:\033[0m"
|
echo -e "\033[4mInfo on\033[0m \033[1;41m $nb \033[0m \033[4mupdated packages:\033[0m"
|
||||||
|
|
||||||
if [ -x "$(command -v jq)" ]; then
|
if [ -x "$(command -v jq)" ]; then
|
||||||
# ok avec jq installé
|
# ok avec jq installé
|
||||||
|
|
||||||
for row in $(jq -c '.[]' <<< "$upd3");
|
i=0
|
||||||
|
for row in $(jq -c '.[]' <<< "$upd_json");
|
||||||
do
|
do
|
||||||
|
|
||||||
name=$(echo "$row" | jq -j '.name, "\n"');
|
name=$(echo "$row" | jq -j '.name, "\n"');
|
||||||
@@ -97,12 +146,18 @@ if [ -n "$upd3" ]; then
|
|||||||
pinned_v=$(echo "$row" | jq -j '.pinned_version, "\n"');
|
pinned_v=$(echo "$row" | jq -j '.pinned_version, "\n"');
|
||||||
iv=$(echo "$row" | jq -j '.installed_versions, "\n"');
|
iv=$(echo "$row" | jq -j '.installed_versions, "\n"');
|
||||||
installed_v=$(echo "$iv" | jq -j '.[]');
|
installed_v=$(echo "$iv" | jq -j '.[]');
|
||||||
#echo "$iv"
|
|
||||||
current_v=$(echo "$row" | jq -j '.current_version, "\n"');
|
current_v=$(echo "$row" | jq -j '.current_version, "\n"');
|
||||||
|
|
||||||
info_pkg=$(brew info --json=v1 "$name")
|
#n="array_info$i[0]"
|
||||||
homepage=$(echo "$info_pkg" | jq -r .[].homepage)
|
#name=$(echo ${!n})
|
||||||
desc=$(echo "$info_pkg" | jq -r .[].desc)
|
h="array_info$i[1]"
|
||||||
|
homepage=$(echo ${!h})
|
||||||
|
d="array_info$i[2]"
|
||||||
|
desc=$(echo ${!d} | base64 --decode)
|
||||||
|
|
||||||
|
#info_pkg=$(brew info --json=v1 "$name")
|
||||||
|
#homepage=$(echo "$info_pkg" | jq -r .[].homepage)
|
||||||
|
#desc=$(echo "$info_pkg" | jq -r .[].desc)
|
||||||
#current=$(echo "$info_pkg" | jq -r .[].installed[].version | tail -n 1 | awk '{print $1}')
|
#current=$(echo "$info_pkg" | jq -r .[].installed[].version | tail -n 1 | awk '{print $1}')
|
||||||
#stable=$(echo "$info_pkg" | jq -r .[].versions.stable)
|
#stable=$(echo "$info_pkg" | jq -r .[].versions.stable)
|
||||||
#pined=$(echo "$info_pkg" | jq -r .[].pinned)
|
#pined=$(echo "$info_pkg" | jq -r .[].pinned)
|
||||||
@@ -112,18 +167,21 @@ if [ -n "$upd3" ]; then
|
|||||||
if [ "$pinned" = "true" ]; then echo -e "\033[1;31m$name: installed: $installed_v stable: $current_v [pinned at $pinned_v]\033[0m";
|
if [ "$pinned" = "true" ]; then echo -e "\033[1;31m$name: installed: $installed_v stable: $current_v [pinned at $pinned_v]\033[0m";
|
||||||
else echo -e "\033[1;37m$name: installed: $installed_v stable: $current_v\033[0m";
|
else echo -e "\033[1;37m$name: installed: $installed_v stable: $current_v\033[0m";
|
||||||
fi
|
fi
|
||||||
echo "$desc"
|
if [ "$desc" != "null" ]; then echo "$desc"; fi;
|
||||||
echo "$homepage"
|
echo -e "\033[4m$homepage\033[0m"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
((i++))
|
||||||
done
|
done
|
||||||
upd3=$upd
|
upd3=$upd
|
||||||
else
|
else
|
||||||
# test sans jq
|
# ok sans jq
|
||||||
|
|
||||||
for pkg in $upd3
|
for pkg in $upd3
|
||||||
do
|
do
|
||||||
info=$(brew info $pkg | head -n 4)
|
info_pkg="${array_info[$pkg]}"
|
||||||
ligne1=$(echo "$info" | head -n 1)
|
ligne1=$(echo "$info_pkg" | head -n 1)
|
||||||
|
desc=$(echo "$info_pkg"| sed '1d')
|
||||||
|
|
||||||
if [[ $ligne1 =~ "pinned" ]]; then # same as if [[ $ligne1 == *"pinned"* ]]; then
|
if [[ $ligne1 =~ "pinned" ]]; then # same as if [[ $ligne1 == *"pinned"* ]]; then
|
||||||
echo -e "\033[1;31m$ligne1\033[0m"
|
echo -e "\033[1;31m$ligne1\033[0m"
|
||||||
@@ -131,7 +189,7 @@ if [ -n "$upd3" ]; then
|
|||||||
echo -e "\033[1m$ligne1\033[0m"
|
echo -e "\033[1m$ligne1\033[0m"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$info" | sed -n -e '2,3p'
|
echo "$desc"
|
||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -151,7 +209,6 @@ if [ -n "$upd3" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
not_pinned=$(echo "$not_pinned" | sed 's/.$//')
|
not_pinned=$(echo "$not_pinned" | sed 's/.$//')
|
||||||
#echo "Not pinned: $not_pinned"
|
|
||||||
|
|
||||||
# Update outdated packages
|
# Update outdated packages
|
||||||
|
|
||||||
@@ -173,8 +230,8 @@ if [ -n "$upd3" ]; then
|
|||||||
do
|
do
|
||||||
FOUND=`echo ${do_not_update[*]} | grep "$i"`
|
FOUND=`echo ${do_not_update[*]} | grep "$i"`
|
||||||
if [ "${FOUND}" = "" ]; then
|
if [ "${FOUND}" = "" ]; then
|
||||||
#echo "$i" | awk '{print $1}' | xargs -p -n 1 brew upgrade
|
echo "$i" | awk '{print $1}' | xargs -p -n 1 brew upgrade
|
||||||
echo "Running update package $i "
|
#echo "Running update package $i "
|
||||||
#fi
|
#fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -188,8 +245,8 @@ if [ -n "$upd3" ]; then
|
|||||||
else # no distract = true
|
else # no distract = true
|
||||||
|
|
||||||
if [ -n "$not_pinned" ]; then
|
if [ -n "$not_pinned" ]; then
|
||||||
#echo "$not_pinned" | awk '{print $1}' | xargs -n 1 brew upgrade
|
echo "$not_pinned" | awk '{print $1}' | xargs -n 1 brew upgrade
|
||||||
echo "Running update package $not_pinned"
|
#echo "Running update package $not_pinned"
|
||||||
else
|
else
|
||||||
echo "No package to update"
|
echo "No package to update"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user