PublicFiles/Artian-Apps/.github/workflows/update_debian_repo_script.sh

157 lines
10 KiB
Bash

#!/bin/bash
# to run this script as part of other update scripts, source the directory like below
# source $GITHUB_WORKSPACE/.github/workflows/update_debian_repo_script.sh
# you must have already set corresponding values for armhf_webPackages, arm64_webPackages, or all_webPackages
# The corresponding appname in pi-apps will have its corresponding filepath= variable update
# the filepath variable will contain the full filepath of the debian package with the version included
# make sure required variable(s) is(are) supplied by the sourcing script
if [ -n "$armhf_webPackages" ] || [ -n "$arm64_webPackages" ] || [ -n "$all_webPackages" ]; then
#iterate through all variables supplied if an array
# get longest arrary of passed variables
num=$(echo -e "${#armhf_webPackages[@]}\n${#arm64_webPackages[@]}\n${#all_webPackages[@]}" | sort -n -r | head -1)
for (( iter=0; iter<$num; iter++ )); do
#make array appear as one variable inside for loop
armhf_webPackages=${armhf_webPackages[$iter]}
arm64_webPackages=${arm64_webPackages[$iter]}
all_webPackages=${all_webPackages[$iter]}
armhf_packagename=${armhf_packagename[$iter]}
arm64_packagename=${arm64_packagename[$iter]}
all_packagename=${all_packagename[$iter]}
if [[ $iter == "0" ]]; then
version_number=""
else
version_number=$((iter + 1))
fi
#set pi_apps_filepath variables
if [ -n "$armhf_webPackages" ] && [ -f install-32 ]; then
pi_apps_filepath_32="$(cat 'install-32' | grep -m 1 "filepath${version_number}=" | sed "s/filepath${version_number}=//" | xargs)"
fi
if [ -n "$arm64_webPackages" ] && [ -f install-64 ]; then
pi_apps_filepath_64="$(cat 'install-64' | grep -m 1 "filepath${version_number}=" | sed "s/filepath${version_number}=//" | xargs)"
fi
if [ -n "$all_webPackages" ] && [ -f install ]; then
pi_apps_filepath="$(cat 'install' | grep -m 1 "filepath${version_number}=" | sed "s/filepath${version_number}=//" | xargs)"
fi
# check for armhf and arm64 URL with a single install script using the same version
if [ -z "$pi_apps_filepath_32" ] && [ -z "$pi_apps_filepath_64" ] && [ -n "$armhf_webPackages" ] && [ -n "$arm64_webPackages" ] && [ -f install ]; then
pi_apps_filepath_32="$(cat 'install' | grep -m 1 "filepath_32${version_number}=" | sed "s/filepath_32${version_number}=//" | xargs)"
pi_apps_filepath_64="$(cat 'install' | grep -m 1 "filepath_64${version_number}=" | sed "s/filepath_64${version_number}=//" | xargs)"
fi
# install-32 exists
if [ -n "$pi_apps_filepath_32" ] && [ -a "$DIRECTORY/apps/$app_name/install-32" ]; then
status "The current version in Pi-Apps install-32 is: $pi_apps_filepath_32"
armhf_webVer="$(wget -qO- "$armhf_webPackages" | awk "/Package: $armhf_packagename\n/" RS= | grep "Version:" | awk '{print $2}' | sort -V | tail -n1)"
armhf_package_path="$(wget -qO- "$armhf_webPackages" | awk "/Package: $armhf_packagename\n/" RS= | sed -n -e "/Version: ${armhf_webVer}/,/Filename:/ p" | grep "Filename:" | awk '{print $2}')"
repo_url="$(echo "$armhf_webPackages" | sed 's/dists.*//')"
if [[ "$pi_apps_filepath_32" = "${repo_url}${armhf_package_path}" ]]; then
#If the version is current do:
status "Pi-Apps install-32 version for $app_name is current!"
else
#If version is not current do:
if validate_url "${repo_url}${armhf_package_path}"; then
status_green "Updating pi-apps $app_name install-32 to: ${repo_url}${armhf_package_path}"
sed -i "0,/filepath${version_number}=.*/s;;filepath${version_number}=\"${repo_url}${armhf_package_path}\";g" install-32
echo "- $app_name-armhf: $pi_apps_filepath_32 -> ${repo_url}${armhf_package_path} " >> /tmp/updated_apps
else
warning "Updating $app_name install-32 had been skipped, the upstream file ${repo_url}${armhf_package_path} does NOT exist."
echo "**Updating $app_name install-32 had been skipped, the upstream file ${repo_url}${armhf_package_path} does NOT exist.**" >> /tmp/failed_apps
fi
fi
fi
# install-64 exists
if [ -n "$pi_apps_filepath_64" ] && [ -a "$DIRECTORY/apps/$app_name/install-64" ]; then
status "The current version in Pi-Apps install-64 is: $pi_apps_filepath_64"
arm64_webVer="$(wget -qO- "$arm64_webPackages" | awk "/Package: $arm64_packagename\n/" RS= | grep "Version:" | awk '{print $2}' | sort -V | tail -n1)"
arm64_package_path="$(wget -qO- "$arm64_webPackages" | awk "/Package: $arm64_packagename\n/" RS= | sed -n -e "/Version: ${arm64_webVer}/,/Filename:/ p" | grep "Filename:" | awk '{print $2}')"
repo_url="$(echo "$arm64_webPackages" | sed 's/dists.*//')"
if [[ "$pi_apps_filepath_64" = "${repo_url}${arm64_package_path}" ]]; then
#If the version is current do:
status "Pi-Apps install-64 version for $app_name is current!"
else
#If version is not current do:
if validate_url "${repo_url}${arm64_package_path}"; then
status_green "Updating pi-apps $app_name install-64 to: ${repo_url}${arm64_package_path}"
sed -i "0,/filepath${version_number}=.*/s;;filepath${version_number}=\"${repo_url}${arm64_package_path}\";g" install-64
echo "- $app_name-arm64: $pi_apps_filepath_64 -> ${repo_url}${arm64_package_path} " >> /tmp/updated_apps
else
warning "Updating $app_name install-64 had been skipped, the upstream file ${repo_url}${arm64_package_path} does NOT exist."
echo "**Updating $app_name install-64 had been skipped, the upstream file ${repo_url}${arm64_package_path} does NOT exist.**" >> /tmp/failed_apps
fi
fi
fi
# install exists and all_webPackages is used
if [ -n "$pi_apps_filepath" ] && [ -n "$all_webPackages" ] && [ -a "$DIRECTORY/apps/$app_name/install" ]; then
status "The current version in Pi-Apps install is: $pi_apps_filepath"
all_webVer="$(wget -qO- "$all_webPackages" | awk "/Package: $all_packagename\n/" RS= | grep "Version:" | awk '{print $2}' | sort -V | tail -n1)"
all_package_path="$(wget -qO- "$all_webPackages" | awk "/Package: $all_packagename\n/" RS= | sed -n -e "/Version: ${all_webVer}/,/Filename:/ p" | grep "Filename:" | awk '{print $2}')"
repo_url="$(echo "$all_webPackages" | sed 's/dists.*//')"
if [[ "$pi_apps_filepath" = "${repo_url}${all_package_path}" ]]; then
#If the version is current do:
status "Pi-Apps install version for $app_name is current!"
else
#If version is not current do:
if validate_url "${repo_url}${all_package_path}"; then
status_green "Updating pi-apps $app_name install to: ${repo_url}${all_package_path}"
sed -i "0,/filepath${version_number}=.*/s;;filepath${version_number}=\"${repo_url}${all_package_path}\";g" install
echo "- $app_name-all: $pi_apps_filepath -> ${repo_url}${all_package_path} " >> /tmp/updated_apps
else
warning "Updating $app_name install had been skipped, the upstream file ${repo_url}${all_package_path} does NOT exist."
echo "**Updating $app_name install had been skipped, the upstream file ${repo_url}${all_package_path} does NOT exist.**" >> /tmp/failed_apps
fi
fi
fi
# install exists and individual armhf_webPackages and arm64_webPackages are supplied
if [ -n "$pi_apps_filepath_32" ] && [ -n "$pi_apps_filepath_64" ] && [ -n "$armhf_webPackages" ] && [ -n "$arm64_webPackages" ] && [ -a "$DIRECTORY/apps/$app_name/install" ]; then
status "The current version in Pi-Apps install is: $pi_apps_filepath_32 $pi_apps_filepath_64"
armhf_webVer="$(wget -qO- "$armhf_webPackages" | awk "/Package: $armhf_packagename\n/" RS= | grep "Version:" | awk '{print $2}' | sort -V | tail -n1)"
armhf_package_path="$(wget -qO- "$armhf_webPackages" | awk "/Package: $armhf_packagename\n/" RS= | sed -n -e "/Version: ${armhf_webVer}/,/Filename:/ p" | grep "Filename:" | awk '{print $2}')"
arm64_webVer="$(wget -qO- "$arm64_webPackages" | awk "/Package: $arm64_packagename\n/" RS= | grep "Version:" | awk '{print $2}' | sort -V | tail -n1)"
arm64_package_path="$(wget -qO- "$arm64_webPackages" | awk "/Package: $arm64_packagename\n/" RS= | sed -n -e "/Version: ${arm64_webVer}/,/Filename:/ p" | grep "Filename:" | awk '{print $2}')"
repo_url_armhf="$(echo "$armhf_webPackages" | sed 's/dists.*//')"
repo_url_arm64="$(echo "$arm64_webPackages" | sed 's/dists.*//')"
if [[ "$pi_apps_filepath_64" = "${repo_url_arm64}${arm64_package_path}" ]] && [[ "$pi_apps_filepath_32" = "${repo_url_armhf}${armhf_package_path}" ]]; then
#If the version is current do:
status "Pi-Apps install version for $app_name is current!"
else
if validate_url "${repo_url_armhf}${armhf_package_path}" && validate_url "${repo_url_arm64}${arm64_package_path}"; then
status_green "Updating pi-apps $app_name install to: ${repo_url_armhf}${armhf_package_path} ${repo_url_arm64}${arm64_package_path}"
sed -i "0,/filepath_32${version_number}=.*/s;;filepath_32${version_number}=\"${repo_url_armhf}${armhf_package_path}\";g" install
sed -i "0,/filepath_64${version_number}=.*/s;;filepath_64${version_number}=\"${repo_url_arm64}${arm64_package_path}\";g" install
echo "- $app_name-all: $pi_apps_filepath_32 -> ${repo_url_armhf}${armhf_package_path} " >> /tmp/updated_apps
echo "- $app_name-all: $pi_apps_filepath_64 -> ${repo_url_arm64}${arm64_package_path} " >> /tmp/updated_apps
else
warning "Updating $app_name install had been skipped, the upstream file ${repo_url_armhf}${armhf_package_path} or ${repo_url_arm64}${arm64_package_path} does NOT exist."
echo "**Updating $app_name install had been skipped, the upstream file ${repo_url_armhf}${armhf_package_path} or ${repo_url_arm64}${arm64_package_path} does NOT exist.**" >> /tmp/failed_apps
fi
fi
fi
done
else
warning "armhf_webPackages, arm64_webPackages, or all_webPackages variable is missing for $app_name update script, please fix this script, skipping update check."
echo "**armhf_webPackages, arm64_webPackages, or all_webPackages variable is missing for $app_name update script, please fix this script, skipping update check.**" >> /tmp/failed_apps
fi
unset armhf_webPackages
unset arm64_webPackages
unset all_webPackages
unset armhf_packagename
unset arm64_packagename
unset all_packagename
unset pi_apps_filepath_32
unset pi_apps_filepath_64
unset pi_apps_filepath