From 8cec866de188736b349c6621497d0b116e31eef9 Mon Sep 17 00:00:00 2001 From: Christopher Rose Date: Tue, 25 Jun 2019 22:44:22 +0530 Subject: [PATCH] Code --- index.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ serviceScript.sh | 23 +++++++++++++++++++++ settings.json | 23 +++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 index.js create mode 100755 serviceScript.sh create mode 100644 settings.json diff --git a/index.js b/index.js new file mode 100644 index 0000000..33216e4 --- /dev/null +++ b/index.js @@ -0,0 +1,54 @@ + +const {parseString} = require('xml2js') +const fs = require('fs') + +const settings = JSON.parse(fs.readFileSync("settings.json")) +console.log("Loaded configuration") +//console.log(settings) +//console.log(process.argv) +fs.readFile(settings.fileName,(err,data)=>{ + if(err){ + throw new Error(err.code,": Could not read file. Try again.:",err.name) + } + console.log(`Reading ${settings.fileName}`) + parseString(data,(err,res)=>{ + if(err){ + throw new Error(err.code,": Error parsing file.:",err.name) + } + + console.log(`Parsing ${settings.fileName}`) + console.log("Model: ",res.flashing.header[0].phone_model[0].$.model) + + // Store steps + const steps = res.flashing.steps[0] + //console.log(steps.$.interface) + if(steps.$.interface!=="AP") { + throw new Error("Does not look like servicefile.xml. Aborting.") + } + let sScript = settings.scriptConfig.env[settings.defaultMode].preconfig + '\n' + sScript+= `${settings.scriptConfig.env[settings.defaultMode].commentPre} Generated for ${res.flashing.header[0].phone_model[0].$.model} \n` + steps.step.forEach(e=>{ + switch(e.$.operation){ + case "oem": + case "getvar": + sScript += (`${settings.scriptConfig.general.command} ${e.$.operation} ${e.$.var}`) +'\n' + break; + case "flash": + sScript += (`${settings.scriptConfig.general.command} ${e.$.operation} ${e.$.partition} ${e.$.filename}`) +'\n' + break; + case "erase": + sScript += (`${settings.scriptConfig.general.command} ${e.$.operation} ${e.$.partition}`) +'\n' + break; + default: + throw new Error(`Unkown: ${e.$.operation}`) + } + }) + fs.writeFile(settings.serviceScript+settings.scriptConfig.env[settings.defaultMode].extension,sScript,{mode:0o765},(err)=>{ + if(err){ + throw new Error(`${err.errno}: Error Writing Script: ${err.name}`) + } + console.log("Done") + }) + //console.log(sScript) + }) +}) diff --git a/serviceScript.sh b/serviceScript.sh new file mode 100755 index 0000000..4fbc60a --- /dev/null +++ b/serviceScript.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Generated for ahannah +fastboot getvar max-sparse-size +fastboot oem fb_mode_set +fastboot flash partition gpt.bin +fastboot flash bootloader bootloader.img +fastboot flash modem NON-HLOS.bin +fastboot flash fsg fsg.mbn +fastboot erase modemst1 +fastboot erase modemst2 +fastboot flash dsp adspso.bin +fastboot flash logo logo.bin +fastboot flash boot boot.img +fastboot flash recovery recovery.img +fastboot flash system system.img_sparsechunk.0 +fastboot flash system system.img_sparsechunk.1 +fastboot flash system system.img_sparsechunk.2 +fastboot flash system system.img_sparsechunk.3 +fastboot flash system system.img_sparsechunk.4 +fastboot flash vendor vendor.img +fastboot flash oem oem.img +fastboot erase DDR +fastboot oem fb_mode_clear diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..d846859 --- /dev/null +++ b/settings.json @@ -0,0 +1,23 @@ +{ + "defaultMode": "0", + "scriptConfig":{ + "general":{ + "command":"fastboot" + }, + "env":[ + { + "name":"sh", + "preconfig":"#!/bin/bash", + "extension":".sh", + "commentPre":"#" + }, + { + "name":"batch", + "preconfig":"@echo off", + "extension":".bat", + "commentPre":"::" + }] + }, + "fileName":"servicefile.xml", + "serviceScript": "serviceScript" +} \ No newline at end of file