From cc4e20bce194bae0ef4ea65f357ce4ec037f75fe Mon Sep 17 00:00:00 2001 From: ShaneTheAwesome Date: Tue, 12 Nov 2019 22:41:19 +0400 Subject: [PATCH] Added auto update --- conf/resdl-download.txt | 28 ++++++++ update.sh | 145 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 conf/resdl-download.txt mode change 100644 => 100755 update.sh diff --git a/conf/resdl-download.txt b/conf/resdl-download.txt new file mode 100644 index 0000000..cc67c84 --- /dev/null +++ b/conf/resdl-download.txt @@ -0,0 +1,28 @@ +# Config file for update.sh + +stuff_repo=" + fdroid https://f-droid.org/repo + microg https://microg.org/fdroid/repo + nanolx https://nanolx.org/fdroid/repo +"; + +stuff_download=" + /system/app/AppleNLPBackend/AppleNLPBackend.apk repo fdroid/org.microg.nlp.backend.apple + /system/app/AuroraDroid/AuroraDroid.apk gitlab AuroraOSS/auroradroid .apk + /system/app/AuroraStore/AuroraStore.apk gitlab AuroraOSS/AuroraStore .apk + /system/app/DejaVuNLPBackend/DejaVuNLPBackend.apk repo fdroid/org.fitchfamily.android.dejavu + /system/app/LocalGSMNLPBackend/LocalGSMNLPBackend.apk repo fdroid/org.fitchfamily.android.gsmlocation + /system/app/LocalWiFiNLPBackend/LocalWiFiNLPBackend.apk repo fdroid/org.fitchfamily.android.wifi_backend + /system/app/MicroGGSFProxy/MicroGGSFProxy.apk repo microg/com.google.android.gsf + /system/app/MozillaUnifiedNLPBackend/MozillaUnifiedNLPBackend.apk repo fdroid/org.microg.nlp.backend.ichnaea + /system/app/NominatimNLPBackend/NominatimNLPBackend.apk repo fdroid/org.microg.nlp.backend.nominatim + /system/app/RadioCellsNLPBackend/RadioCellsNLPBackend.apk repo fdroid/org.openbmap.unifiedNlp + /system/priv-app/AuroraServices/AuroraServices.apk gitlab AuroraOSS/AuroraServices .apk + /system/priv-app/FakeStore/FakeStore.apk repo microg/com.android.vending + /system/priv-app/MicroGDroidGuard/MicroGDroidGuard.apk repo microg/org.microg.gms.droidguard + /system/priv-app/MicroGGMSCore/MicroGGMSCore.apk repo microg/com.google.android.gms + /system/priv-app/MicroGUNLP/MicroGUNLP.apk repo fdroid/com.google.android.gms + /system/priv-app/PatchPhonesky/PatchPhonesky.apk repo nanolx/com.android.vending + /util/aapt-arm direct https://gitlab.com/Nanolx/NanoDroid/raw/master/tools/aapt.arm + /util/aapt-x86 direct https://gitlab.com/Nanolx/NanoDroid/raw/master/tools/aapt.x86 +"; diff --git a/update.sh b/update.sh old mode 100644 new mode 100755 index c60568e..8d878de --- a/update.sh +++ b/update.sh @@ -1,5 +1,144 @@ -# Update all binary assets +#!/bin/sh +# Update all assets -# Delete all assets +workdir="$(pwd)"; +cd "$workdir"; +confdir="$workdir/conf"; +resdldir="$workdir/resdl"; +tmpdir="$workdir/tmp"; -# Download new ones \ No newline at end of file +echo " "; +echo "-- Minimal MicroG Update Script --"; +echo "-- The Essentials Only MicroG Pack --"; +echo "-- From The MicroG Telegram group --"; +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; } +done; + +echo " "; +echo " - Cleaning..."; + +rm -Rf "$tmpdir"; +mkdir -p "$tmpdir" "$tmpdir/repos"; + +# Config + +[ -f "$confdir/resdl-download.txt" ] || { echo " "; echo "FATAL: No resdl-download.txt found"; return 1; } +cp "$confdir/resdl-download.txt" "$tmpdir/resdl"; +chmod 777 "$tmpdir/resdl"; +. "$tmpdir/resdl"; + +if [ $@ ]; then + echo " "; + echo " - Building update list..."; + stuff_download_new=""; + stuff_repo_new=""; + for include in $@; do + echo " -- CONFIG: Including $include"; + stuff_download_new="$stuff_download_new +$(echo "$stuff_download" | grep -Pi "^[ \t]*[^ \t]*$include[^ \t]*[ \t]+") +"; + done; + stuff_download="$(echo "$stuff_download_new" | sort -u)"; + repo_apps="$(echo "$stuff_download" | grep -P "^[ \t]*[^ \t]+[ \t]+repo[ \t]+")"; + for repo in $(echo "$repo_apps" | awk '{ print $3 }'); do + stuff_repo_new="$stuff_repo_new +$(echo "$stuff_repo" | grep -P "^[ \t]*$(dirname "$repo")[ \t]+" | head -n1) +"; + done; + stuff_repo="$(echo "$stuff_repo_new" | sort -u)"; +fi; + +# Download repos + +echo " "; +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; } + echo " -- REPO: Downloading repo $repo from URL $repourl"; + 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; } + 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; } + mv -f "$tmpdir/repos/index-v1.json" "$tmpdir/repos/$repo.json"; + [ -f "$tmpdir/repos/$repo.json" ] || { echo "ERROR: Repo $repo failed to rename"; continue; } +done; + +# Download assets + +echo " "; +echo " - Downloading assets..."; + +for object in $(echo "$stuff_download" | awk '{ print $1 }'); do + line="$(echo "$stuff_download" | grep -P "^[ \t]*$object[ \t]+" | head -n1)"; + 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; } + echo " -- ASSET: Downloading object $object from source $source"; + case "$source" in + local) + objectfile="$objectpath"; + ;; + *) + case "$source" in + direct) + objecturl="$objectpath"; + ;; + github) + echo " ---- Getting GitHub URL for $object"; + objecturl="$(curl -sN "https://api.github.com/repos/$objectpath/releases" | jq -r '.[].assets[].browser_download_url' | grep "$objectarg$" | head -n1)"; + ;; + 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; } + echo " ---- Getting GitLab URL for $object"; + objecturl="https://gitlab.com/$objectpath$(curl -sN https://gitlab.com/api/v4/projects/$objectid/repository/tags | jq -r '.[].release.description' | grep -Po "(/uploads/[^()]*$objectarg)" | head -n1 | tr -d "()")"; + ;; + 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; } + echo " ---- Getting repo URL for $object from repo $repo"; + objectserver="$(jq -r '.repo.address' "$tmpdir/repos/$objectrepo.json")"; + if [ "$objectarg" ]; then + echo " ---- Getting object for arch $objectarg"; + objectserverfile="$(jq -r --arg pkg "$objectpackage" --arg arch "$objectarg" '[.packages[$pkg][] | select (.nativecode[]==$arch).apkName][]' "$tmpdir/repos/$objectrepo.json" | head -n1)"; + 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; } + objecturl="$objectserver/$objectserverfile"; + ;; + *) + echo "ERROR: Source $source for $object unknown"; + ;; + esac; + [ "$objecturl" ] || { echo "ERROR: $object has no URL available"; continue; } + objectname="$(basename "$objecturl")"; + objectfile="$tmpdir/$objectname"; + echo " ---- Downloading $objecturl to $objectfile"; + wget -q --show-progress "$objecturl" -O "$objectfile"; + [ -f "$objectfile" ] || { echo "ERROR: $object failed to download"; continue; } + ;; + esac; + mkdir -p "$resdldir/$(dirname "$object")"; + mv -f "$objectfile" "$resdldir/$object"; + [ -f "$resdldir/$object" ] || { echo "ERROR: $object failed to copy"; continue; } +done; + +# Done + +echo " "; +echo " - Done!"; + +rm -Rf "$tmpdir"; +echo " ";