summaryrefslogtreecommitdiffstats
path: root/firmwares.sh
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-01-06 03:03:26 +0100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-01-11 23:11:28 +0100
commit1fa51cbc241652ba09e9a52e9852120585720167 (patch)
tree7bb5de93e97162fac8224bd921b0694bacc8b361 /firmwares.sh
downloadfirmwares_nonfree-1fa51cbc241652ba09e9a52e9852120585720167.zip
firmwares_nonfree-1fa51cbc241652ba09e9a52e9852120585720167.tar.gz
firmwares_nonfree-1fa51cbc241652ba09e9a52e9852120585720167.tar.bz2
Initial version
Only supports the Galaxy S3 (GT-I9300) for now. This is a rewrite of Paul Kocialkowski's script for previous CyanogenMod versions which can be found here: git.paulk.fr/gitweb/?p=cm-firmwares.git;a=summary Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Diffstat (limited to 'firmwares.sh')
-rwxr-xr-xfirmwares.sh160
1 files changed, 160 insertions, 0 deletions
diff --git a/firmwares.sh b/firmwares.sh
new file mode 100755
index 0000000..fd32950
--- /dev/null
+++ b/firmwares.sh
@@ -0,0 +1,160 @@
+#!/bin/sh
+#
+# Copyright (C) 2017 Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set -e
+
+DEVICE=$1
+FW_FUNC=$2
+ACTION=$3
+FW_HOST="https://github.com/TheMuppets"
+ADB="adb"
+
+get_files () {
+ fw_file=$1
+
+ mkdir -p "$DEVICE-fw"
+
+ cat "$DEVICE-fwinfo/$fw_file.txt" | while read file
+ do
+ link=${file%:*}
+
+ wget "$FW_HOST/$link" -O "$DEVICE-fw/"$( basename $file )
+ done
+}
+
+find_files () {
+ fw_file=$1
+
+ cat "$DEVICE-fwinfo/$fw_file.txt" | while read file
+ do
+ path="$DEVICE-fw/"$( basename $file )
+
+ if [ ! -f "$path" ]
+ then
+ echo "$path missing, downloading..."
+ get_files $fw_file
+ break
+ fi
+ done
+}
+
+prepare_adb () {
+ $ADB root
+ sleep 3
+ $ADB remount
+}
+
+push_files () {
+ fw_file=$1
+
+ cat "$DEVICE-fwinfo/$fw_file.txt" | while read file
+ do
+ echo "Pushing ${file#*:}"
+
+ path=$( dirname "${file#*:}" )
+ $ADB shell mkdir -p "$path"
+
+ path="$DEVICE-fw/"$( basename $file )
+ $ADB push "$path" "${file#*:}"
+ done
+}
+
+remove_files () {
+ fw_file=$1
+
+ cat "$DEVICE-fwinfo/$fw_file.txt" | while read file
+ do
+ path="${file#*:}"
+ echo "Removing $path"
+ $ADB shell rm -f "$path"
+ done
+}
+
+list_func () {
+ echo "The following functionalities can be enabled:"
+ for file in "$DEVICE-fwinfo/"*.txt
+ do
+ echo $( basename $file .txt )
+ done
+ exit 0
+}
+
+eval_fw_func () {
+ command=$1
+
+ case "$FW_FUNC" in
+ "all")
+ for file in "$DEVICE-fwinfo/"*.txt
+ do
+ $command $( basename $file .txt )
+ done
+ ;;
+ *)
+ $command $FW_FUNC
+ ;;
+ esac
+}
+
+if [ "$DEVICE" = "" ] || [ "$FW_FUNC" = "" ]
+then
+ echo "Usage: $0 [DEVICE] [FUNCTIONALITY]"
+ echo " $0 [DEVICE] [FUNCTIONALITY] remove"
+ echo
+ echo "Run \"$0 [DEVICE] list\" to get a list of functionalities that can be enabled"
+ echo "or specify \"all\" to enable/remove all supported functionalities"
+ echo
+ exit 1
+fi
+
+if [ ! -d "$DEVICE-fwinfo" ]
+then
+ echo "$DEVICE is not supported"
+ echo "The following devices are supported:"
+ for dir in *-fwinfo
+ do
+ echo "${dir%-fwinfo}"
+ done
+ exit 1
+fi
+
+if [ "$FW_FUNC" = "list" ]
+then
+ list_func
+fi
+
+if [ "$FW_FUNC" != "all" ] && [ ! -f "$DEVICE-fwinfo/$FW_FUNC.txt" ]
+then
+ echo "$FW_FUNC is not a functionality that can be enabled"
+ echo
+ list_func
+fi
+
+case "$ACTION" in
+ "remove")
+ prepare_adb
+ eval_fw_func remove_files
+ ;;
+ *)
+ eval_fw_func find_files
+ prepare_adb
+ eval_fw_func push_files
+ ;;
+esac
+
+echo "rebooting the device"
+$ADB reboot
+echo "finished successfully"