diff options
author | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-01-06 03:03:26 +0100 |
---|---|---|
committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-01-11 23:11:28 +0100 |
commit | 1fa51cbc241652ba09e9a52e9852120585720167 (patch) | |
tree | 7bb5de93e97162fac8224bd921b0694bacc8b361 /firmwares.sh | |
download | firmwares_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-x | firmwares.sh | 160 |
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" |