karl.hudgell 3 years ago
parent
commit
15c0320faa
6 changed files with 76 additions and 7 deletions
  1. 14 1
      lib/files.js
  2. 2 1
      lib/inquirer.js
  3. 0 0
      my_apk/.gitkeep
  4. 28 2
      package-lock.json
  5. 1 0
      package.json
  6. 31 3
      pages/pages.js

+ 14 - 1
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)
+  }
 }

+ 2 - 1
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) {

+ 0 - 0
my_apk/.gitkeep


+ 28 - 2
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",

+ 1 - 0
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",

+ 31 - 3
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: