Better error handling

gf-arm64
ShaneTheAwesome 4 years ago
parent e32b820fda
commit 29eb3a0104

@ -18,9 +18,9 @@ echo "-- From the MicroG Telegram group --";
echo "-- No, not the Official one --";
for bin in cp grep java ls mv rm sed zip; do
[ "$(which $bin)" ] || { echo " "; echo "FATAL: No $bin found"; return 1; }
[ "$(which $bin)" ] || { echo " " >&2; echo "FATAL: No $bin found" >&2; return 1; }
done;
[ -f "$zipsigner" ] || { echo " "; echo "FATAL: No zipsigner jar found"; return 1; }
[ -f "$zipsigner" ] || { echo " " >&2; echo "FATAL: No zipsigner jar found" >&2; return 1; }
echo " ";
echo " - Working from $workdir";
@ -28,7 +28,7 @@ echo " - Working from $workdir";
echo " ";
echo " - Build started at $buildtime";
[ "$1" ] || { echo " "; echo "FATAL: No variant specified to build"; return 1; }
[ "$1" ] || { echo " " >&2; echo "FATAL: No variant specified to build" >&2; return 1; }
case "$1" in
all)
@ -43,7 +43,7 @@ case "$1" in
;;
esac;
[ -f "$workdir/conf/defconf-$confvar.txt" ] || { echo " "; echo "FATAL: No variant defconf found"; return 1; }
[ -f "$workdir/conf/defconf-$confvar.txt" ] || { echo " " >&2; echo "FATAL: No variant defconf found" >&2; return 1; }
echo " ";
echo " - Building package $confvar";
@ -54,7 +54,7 @@ mkdir -p "$tmpdir";
# Config
cp -Rf "$workdir/conf/defconf-$confvar.txt" "$tmpdir/defconf";
eval "$(cat "$tmpdir/defconf")" || { echo "ERROR: Config for $confvar cannot be executed"; return 1; };
eval "$(cat "$tmpdir/defconf")" || { echo " " >&2; echo "FATAL: Config for $confvar cannot be executed" >&2; return 1; };
echo " ";
echo " - Config says variant $variant";
@ -64,7 +64,7 @@ echo " ";
echo " - Copying files...";
for file in "$workdir/src/META-INF" "$workdir/LICENSE" "$workdir/README.md"; do
[ -e "$file" ] || { echo "ERROR: $file doesn't exist"; continue; }
[ -e "$file" ] || { echo "ERROR: $file doesn't exist" >&2; continue; }
echo " -- BUILDER: Copying $file";
cp -Rf "$file" "$tmpdir/";
done;
@ -97,7 +97,7 @@ cd "$tmpdir";
zip -r9q "$tmpdir/release.zip" *;
cd "$workdir";
[ -f "$tmpdir/release.zip" ] || { echo " "; echo "FATAL: Zip failed"; return 1; }
[ -f "$tmpdir/release.zip" ] || { echo " " >&2; echo "FATAL: Zip failed" >&2; return 1; }
# Sign
@ -106,7 +106,7 @@ echo " - Signing zip...";
java -jar "$zipsigner" "$tmpdir/release.zip" "$tmpdir/release-signed.zip";
[ -f "$tmpdir/release-signed.zip" ] || { echo " "; echo "FATAL: Zipsigner failed"; return 1; }
[ -f "$tmpdir/release-signed.zip" ] || { echo " " >&2; echo "FATAL: Zipsigner failed" >&2; return 1; }
# Done
@ -116,7 +116,7 @@ echo " - Copying zip to releases...";
mkdir -p "$reldir";
mv -f "$tmpdir/release-signed.zip" "$reldir/MinMicroG-$variant-$ver-$buildtime-signed.zip";
[ -f "$reldir/MinMicroG-$variant-$ver-$buildtime-signed.zip" ] || { echo " "; echo "FATAL: Move failed"; return 1; }
[ -f "$reldir/MinMicroG-$variant-$ver-$buildtime-signed.zip" ] || { echo " " >&2; echo "FATAL: Move failed" >&2; return 1; }
# Done

@ -18,7 +18,7 @@ echo "-- No, not the Official one --";
# Bin check
for bin in awk chmod cp curl grep head jq mv rm sort unzip wget; do
[ "$(which $bin)" ] || { echo " "; echo "FATAL: No $bin found"; return 1; }
[ "$(which $bin)" ] || { echo " " >&2; echo "FATAL: No $bin found" >&2; return 1; }
done;
echo " ";
@ -36,7 +36,7 @@ mkdir -p "$tmpdir" "$tmpdir/repos" "$(dirname "$updatelog")";
# Config
[ -f "$confdir/resdl-download.txt" ] || { echo " "; echo "F: No resdl-download.txt found"; return 1; }
eval "$(cat "$confdir/resdl-download.txt")" || { echo "FATAL: resdl-download.txt cannot be executed"; return 1; };
eval "$(cat "$confdir/resdl-download.txt")" || { echo " "; echo "FATAL: resdl-download.txt cannot be executed" >&2; return 1; };
if [ "$*" ]; then
echo " ";
@ -71,14 +71,14 @@ echo " - Downloading repos...";
for repo in $(echo "$stuff_repo" | awk '{ print $1 }'); do
line="$(echo "$stuff_repo" | grep -P "^[ \t]*$repo[ \t]+" | head -n1)";
repourl="$(echo "$line" | awk '{ print $2 }')";
[ "$repourl" ] || { echo "ERROR: Repo $repo has no URL"; continue; }
[ "$repourl" ] || { echo "ERROR: Repo $repo has no URL" >&2; continue; }
echo " -- REPO: Downloading repo $repo";
wget -q --show-progress "$repourl/index-v1.jar" -O "$tmpdir/repos/$repo.jar";
[ -f "$tmpdir/repos/$repo.jar" ] || { echo "ERROR: Repo $repo failed to download"; continue; }
[ -f "$tmpdir/repos/$repo.jar" ] || { echo "ERROR: Repo $repo failed to download" >&2; continue; }
unzip -oq "$tmpdir/repos/$repo.jar" "index-v1.json" -d "$tmpdir/repos/";
[ -f "$tmpdir/repos/index-v1.json" ] || { echo "ERROR: Repo $repo failed to unzip"; continue; }
[ -f "$tmpdir/repos/index-v1.json" ] || { echo "ERROR: Repo $repo failed to unzip" >&2; continue; }
mv -f "$tmpdir/repos/index-v1.json" "$tmpdir/repos/$repo.json";
[ -f "$tmpdir/repos/$repo.json" ] || { echo "ERROR: Repo $repo failed to rename"; continue; }
[ -f "$tmpdir/repos/$repo.json" ] || { echo "ERROR: Repo $repo failed to rename" >&2; continue; }
done;
# Download assets
@ -91,7 +91,7 @@ for object in $(echo "$stuff_download" | awk '{ print $1 }'); do
source="$(echo "$line" | awk '{ print $2 }')";
objectpath="$(echo "$line" | awk '{ print $3 }')";
objectarg="$(echo "$line" | awk '{ print $4 }')";
[ "$objectpath" ] || { echo "ERROR: $object has no source arguments"; continue; }
[ "$objectpath" ] || { echo "ERROR: $object has no source arguments" >&2; continue; }
echo " -- ASSET: Downloading object $object from source $source";
case "$source" in
local)
@ -109,17 +109,17 @@ for object in $(echo "$stuff_download" | awk '{ print $1 }'); do
gitlab)
echo " ---- Getting GitLab project ID for $object";
objectid="$(curl -sN https://gitlab.com/$objectpath | grep "Project ID" | head -n1 | awk '{ print $3 }')";
[ "$objectid" ] || { echo "ERROR: $object gitlab project ID not found"; continue; }
[ "$objectid" ] || { echo "ERROR: $object gitlab project ID not found" >&2; continue; }
echo " ---- Getting GitLab URL for $object";
objectupload="$(curl -sN "https://gitlab.com/api/v4/projects/$objectid/repository/tags" | jq -r '.[].release.description' | grep -Po "(/uploads/[^()]*$objectarg)" | head -n1 | tr -d "()")";
[ "$objectupload" ] || { echo "ERROR: $object gitlab project upload not found"; continue; }
[ "$objectupload" ] || { echo "ERROR: $object gitlab project upload not found" >&2; continue; }
objecturl="https://gitlab.com/$objectpath$objectupload";
;;
repo)
objectrepo="$(dirname "$objectpath")";
objectpackage="$(basename "$objectpath")";
[ "$objectrepo" -a "$objectpackage" ] || { echo "ERROR: $object has no valid repo arguments"; continue; }
[ -f "$tmpdir/repos/$objectrepo.json" ] || { echo "ERROR: $object repo $objectrepo does not exist"; continue; }
[ "$objectrepo" -a "$objectpackage" ] || { echo "ERROR: $object has no valid repo arguments" >&2; continue; }
[ -f "$tmpdir/repos/$objectrepo.json" ] || { echo "ERROR: $object repo $objectrepo does not exist" >&2; continue; }
echo " ---- Getting repo URL for $object from repo $repo";
objectserver="$(jq -r '.repo.address' "$tmpdir/repos/$objectrepo.json")";
if [ "$objectarg" ]; then
@ -128,25 +128,25 @@ for object in $(echo "$stuff_download" | awk '{ print $1 }'); do
else
objectserverfile="$(jq -r --arg pkg "$objectpackage" '.packages[$pkg][].apkName' "$tmpdir/repos/$objectrepo.json" | head -n1)";
fi;
[ "$objectserver" -a "$objectserverfile" ] || { echo "ERROR: $object has no URL available"; continue; }
[ "$objectserver" -a "$objectserverfile" ] || { echo "ERROR: $object has no URL available" >&2; continue; }
objecturl="$objectserver/$objectserverfile";
;;
*)
echo "ERROR: Source $source for $object unknown";
echo "ERROR: Source $source for $object unknown" >&2;
;;
esac;
[ "$objecturl" ] || { echo "ERROR: $object has no URL available"; continue; }
[ "$objecturl" ] || { echo "ERROR: $object has no URL available" >&2; continue; }
objectname="$(basename "$objecturl")";
objectfile="$tmpdir/$objectname";
echo " ---- Downloading $objecturl";
wget -q --show-progress "$objecturl" -O "$objectfile" || { echo "ERROR: $object failed to download"; continue; }
[ -f "$objectfile" ] || { echo "ERROR: $object failed to download"; continue; }
wget -q --show-progress "$objecturl" -O "$objectfile" || { echo "ERROR: $object failed to download" >&2; continue; }
[ -f "$objectfile" ] || { echo "ERROR: $object failed to download" >&2; continue; }
echo "NAME: $objectname, FILE: $object, URL: $objecturl;" >> "$updatelog";
;;
esac;
mkdir -p "$resdldir/$(dirname "$object")";
mv -f "$objectfile" "$resdldir/$object";
[ -f "$resdldir/$object" ] || { echo "ERROR: $object failed to copy"; continue; }
[ -f "$resdldir/$object" ] || { echo "ERROR: $object failed to copy" >&2; continue; }
done;
# Post update actions

Loading…
Cancel
Save