Initial dump of scripts
This commit is contained in:
94
cc-upgrades-check
Executable file
94
cc-upgrades-check
Executable file
@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage() {
|
||||
echo "$0 <recipes|apps>: check for co-op cloud recipes"
|
||||
echo
|
||||
echo "OPTIONS"
|
||||
echo "-s|--servers <SERVER_FILE> provide a file with servers"
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-s|--servers)
|
||||
server_file="$2"
|
||||
shift # past argument
|
||||
shift # past value
|
||||
;;
|
||||
recipes)
|
||||
action="recipes"
|
||||
shift # past argument
|
||||
shift # past value
|
||||
;;
|
||||
apps)
|
||||
action="apps"
|
||||
shift # past argument
|
||||
shift # past value
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "Unknown argument"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$action" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$server_file" ]; then
|
||||
readarray -t servers < "$server_file"
|
||||
else
|
||||
readarray -t servers < <(./bin/gum choose --no-limit < infrastructure-data/coopcloud-servers)
|
||||
fi
|
||||
|
||||
log_file=$(mktemp)
|
||||
|
||||
echo "$(tput setaf 7)Logging to $log_file $(tput sgr0)"
|
||||
echo
|
||||
|
||||
if [ "$action" = "recipes" ]; then
|
||||
readarray -t recipes < <(for server in "${servers[@]}"; do
|
||||
abra app ls -s "$server" -m | jq -r ".\"$server\".apps[].recipe"
|
||||
done | sort -u)
|
||||
|
||||
for recipe in "${recipes[@]}"; do
|
||||
echo "$(tput setaf 2)$recipe $(tput sgr0)"
|
||||
readarray -t line < <(abra recipe upgrade -n -m "$recipe" 2>>"$log_file" | jq -r '. | keys[] as $k | .[$k].service, (.[$k].upgrades | length), (.[$k].upgrades[0])')
|
||||
if [ "${#line[@]}" = 0 ]; then
|
||||
echo "$(tput setaf 3)No updates for $recipe $(tput sgr0)"
|
||||
else
|
||||
for (( i = 0; i < $(("${#line[@]}" / 3)); i++ )); do
|
||||
echo "${line[$((i * 3))]} has ${line[$((i * 3 + 1))]} available update(s), latest is ${line[$((i * 3 + 2))]}"
|
||||
done
|
||||
fi
|
||||
echo
|
||||
done
|
||||
|
||||
echo
|
||||
elif [ "$action" == "apps" ]; then
|
||||
for server in "${servers[@]}"; do
|
||||
echo "$(tput setaf 2)Server: $server$(tput sgr0)"
|
||||
OLDIFS="$IFS"
|
||||
IFS=$'\n'
|
||||
for app_data in $(abra app ls -s "$server" -S -m | jq -c ".\"$server\".apps[]"); do
|
||||
IFS="|" read recipe appName version upgrade < <(echo "$app_data" | jq -r '[.recipe, .appName, .version, .upgrade] | join("|")')
|
||||
if [ ! "$upgrade" = "latest" ]; then echo -n "$(tput setaf 3)"; fi
|
||||
if [ "$upgrade" = "unknown" ]; then echo -n "$(tput setaf 1)"; fi
|
||||
echo "$appName ($recipe): $version → $upgrade"
|
||||
echo -n "$(tput sgr0)"
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
|
||||
echo
|
||||
done
|
||||
fi
|
||||
|
||||
echo "$(tput setaf 3)Errors and warnings: $(tput sgr0)"
|
||||
grep -v "no new versions available for" "$log_file"
|
||||
rm "$log_file"
|
||||
Reference in New Issue
Block a user