From 1fa51cbc241652ba09e9a52e9852120585720167 Mon Sep 17 00:00:00 2001 From: Wolfgang Wiedmeyer Date: Fri, 6 Jan 2017 03:03:26 +0100 Subject: 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 --- firmwares.sh | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100755 firmwares.sh (limited to 'firmwares.sh') 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 +# +# 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 . + +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" -- cgit v1.1