From 15c0320faa801aa106f8e515e70cb442f882c8ab Mon Sep 17 00:00:00 2001 From: "karl.hudgell" Date: Thu, 27 Aug 2020 18:16:39 +0100 Subject: [PATCH] update --- lib/files.js | 15 ++++++++++++++- lib/inquirer.js | 3 ++- my_apk/.gitkeep | 0 package-lock.json | 30 ++++++++++++++++++++++++++++-- package.json | 1 + pages/pages.js | 34 +++++++++++++++++++++++++++++++--- 6 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 my_apk/.gitkeep diff --git a/lib/files.js b/lib/files.js index 159b98b..dd10bd6 100644 --- a/lib/files.js +++ b/lib/files.js @@ -1,5 +1,7 @@ const fs = require('fs'); const path = require('path'); +const tiny = require("@peterpanhihi/tiny"); +const { resolve } = require('path'); module.exports = { getCurrentDirectoryBase: () => { @@ -26,5 +28,16 @@ module.exports = { } catch (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) + } } \ No newline at end of file diff --git a/lib/inquirer.js b/lib/inquirer.js index 4c9422e..8fa8aca 100644 --- a/lib/inquirer.js +++ b/lib/inquirer.js @@ -16,8 +16,9 @@ module.exports = { "Remove Xiaomi Apps", "Restore Xiaomi Apps", "Install Compatible Apps", - "Remove Installed Apps", "Restore ANY app", + "Batch Install APKs", + "Batch Remove Installed Apps", "Quit" ], filter: function (val) { diff --git a/my_apk/.gitkeep b/my_apk/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json index 41f19a9..dcc7e45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "miwatchkleaner2.0", - "version": "2.0.8", + "name": "miwatchkleaner", + "version": "3.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -40,6 +40,11 @@ "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": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -249,6 +254,14 @@ "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": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -867,6 +880,11 @@ "minimist": "^1.2.5" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "multistream": { "version": "2.1.1", "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", "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": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", diff --git a/package.json b/package.json index db374d7..7d09ed4 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "author": "Karl Hudgell", "license": "ISC", "dependencies": { + "@peterpanhihi/tiny": "^2.0.0", "chalk": "^4.0.0", "clear": "^0.1.0", "clui": "^0.3.6", diff --git a/pages/pages.js b/pages/pages.js index c58f319..861ac2d 100644 --- a/pages/pages.js +++ b/pages/pages.js @@ -3,9 +3,7 @@ const common = require('../lib/common'); const inquirer = require('../lib/inquirer'); const shellExec = require('shell-exec') const files = require('../lib/files') -const fs = require('fs') const getFilesIn = require('get-files-in') -var shell = require('shelljs'); let logger = require('perfect-logger'); const globalVariables = require('../lib/globalVars'); @@ -301,6 +299,33 @@ module.exports = { logger.info("App Restore Complete") 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 () => { common.header('Main Menu') const mainMenuSelection = await inquirer.mainMenu(); @@ -320,12 +345,15 @@ module.exports = { case 'install compatible apps': module.exports.compatibleApps() break; - case 'remove installed apps': + case 'batch remove installed apps': module.exports.removeCompatibleApps() break; case 'restore any app': module.exports.restoreAnyApp() break; + case 'batch install apks': + module.exports.batchInstallApks() + break; case 'quit': break; default: