This commit is contained in:
karl.hudgell 2020-08-27 18:16:39 +01:00
parent 42138024a9
commit 15c0320faa
6 changed files with 76 additions and 7 deletions

View File

@ -1,5 +1,7 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const tiny = require("@peterpanhihi/tiny");
const { resolve } = require('path');
module.exports = { module.exports = {
getCurrentDirectoryBase: () => { getCurrentDirectoryBase: () => {
@ -26,5 +28,16 @@ module.exports = {
} catch (err) { } catch (err) {
console.log(err) console.log(err)
} }
}, },
renameLocalApk: async (apkList) => {
return new Promise(function (resolve, reject) {
for (let e of apkList) {
a = tiny(e)
fs.rename(e, a, function (err) {
if (err) console.log('ERROR: ' + err);
});
}
resolve(x / y);
}).catch(err => NaN)
}
} }

View File

@ -16,8 +16,9 @@ module.exports = {
"Remove Xiaomi Apps", "Remove Xiaomi Apps",
"Restore Xiaomi Apps", "Restore Xiaomi Apps",
"Install Compatible Apps", "Install Compatible Apps",
"Remove Installed Apps",
"Restore ANY app", "Restore ANY app",
"Batch Install APKs",
"Batch Remove Installed Apps",
"Quit" "Quit"
], ],
filter: function (val) { filter: function (val) {

0
my_apk/.gitkeep Normal file
View File

30
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "miwatchkleaner2.0", "name": "miwatchkleaner",
"version": "2.0.8", "version": "3.0.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -40,6 +40,11 @@
"fastq": "^1.6.0" "fastq": "^1.6.0"
} }
}, },
"@peterpanhihi/tiny": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@peterpanhihi/tiny/-/tiny-2.0.0.tgz",
"integrity": "sha512-usAoksj49559JLAsQXmrE5wOV6A055icErp8jpJDCicfojwEVPaSLk5EZ1EXhcgIuqjSNkzCOXu0gSdm3Std+w=="
},
"@types/color-name": { "@types/color-name": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
@ -249,6 +254,14 @@
"assert-plus": "^1.0.0" "assert-plus": "^1.0.0"
} }
}, },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"deep-is": { "deep-is": {
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@ -867,6 +880,11 @@
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
}, },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"multistream": { "multistream": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz", "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz",
@ -1082,6 +1100,14 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
}, },
"rename": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/rename/-/rename-1.0.4.tgz",
"integrity": "sha1-oPJQePpBleZQ9zBQx8Esz2ifQws=",
"requires": {
"debug": "^2.5.2"
}
},
"request": { "request": {
"version": "2.88.2", "version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",

View File

@ -15,6 +15,7 @@
"author": "Karl Hudgell", "author": "Karl Hudgell",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@peterpanhihi/tiny": "^2.0.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"clear": "^0.1.0", "clear": "^0.1.0",
"clui": "^0.3.6", "clui": "^0.3.6",

View File

@ -3,9 +3,7 @@ const common = require('../lib/common');
const inquirer = require('../lib/inquirer'); const inquirer = require('../lib/inquirer');
const shellExec = require('shell-exec') const shellExec = require('shell-exec')
const files = require('../lib/files') const files = require('../lib/files')
const fs = require('fs')
const getFilesIn = require('get-files-in') const getFilesIn = require('get-files-in')
var shell = require('shelljs');
let logger = require('perfect-logger'); let logger = require('perfect-logger');
const globalVariables = require('../lib/globalVars'); const globalVariables = require('../lib/globalVars');
@ -301,6 +299,33 @@ module.exports = {
logger.info("App Restore Complete") logger.info("App Restore Complete")
module.exports.mainMenu() module.exports.mainMenu()
}, },
batchInstallApks: async () => {
logger.info("Batch Install Apks")
common.header('Batch Install Apks')
let apkList = await getFilesIn('./my_apk/', matchFiletypes = ['apk'], checkSubDirectories = false)
await files.renameLocalApk(apkList)
apkList = await getFilesIn('./my_apk/', matchFiletypes = ['apk'], checkSubDirectories = false)
for (let element of apkList) {
console.log('Installing ' + element)
logger.info('Installing ' + element)
await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
if (result.stderr != '') {
logger.info('Error ' + result.stderr);
console.log(chalk.redBright(result.stderr));
}
console.log(element + ' - ' + result.stdout);
logger.info(element + ' - ' + result.stdout);
});
}
console.log(chalk.green('Batch Install Apks Completed'))
logger.info('Batch Install Apks Completed')
await common.pause(2000)
module.exports.mainMenu()
},
mainMenu: async () => { mainMenu: async () => {
common.header('Main Menu') common.header('Main Menu')
const mainMenuSelection = await inquirer.mainMenu(); const mainMenuSelection = await inquirer.mainMenu();
@ -320,12 +345,15 @@ module.exports = {
case 'install compatible apps': case 'install compatible apps':
module.exports.compatibleApps() module.exports.compatibleApps()
break; break;
case 'remove installed apps': case 'batch remove installed apps':
module.exports.removeCompatibleApps() module.exports.removeCompatibleApps()
break; break;
case 'restore any app': case 'restore any app':
module.exports.restoreAnyApp() module.exports.restoreAnyApp()
break; break;
case 'batch install apks':
module.exports.batchInstallApks()
break;
case 'quit': case 'quit':
break; break;
default: default: