diff --git a/lib/inquirer.js b/lib/inquirer.js index 96e3b81..564d3d0 100644 --- a/lib/inquirer.js +++ b/lib/inquirer.js @@ -1,6 +1,7 @@ const inquirer = require("inquirer"); const files = require("./files"); const rp = require('request-promise-native') +let logger = require('perfect-logger'); let compatibleApps @@ -75,6 +76,7 @@ module.exports = { await rp(options) .then(function (response) { compatibleApps = JSON.parse(response) + logger.info("Got compatilbe list") }) .catch(function (err) { console.log('compatibleApps.json Not Found') diff --git a/lib/logger.js b/lib/logger.js new file mode 100644 index 0000000..4c8550f --- /dev/null +++ b/lib/logger.js @@ -0,0 +1,7 @@ +const logger = require('perfect-logger'); + + +module.exports = { + + }, +} \ No newline at end of file diff --git a/logger.lock b/logger.lock new file mode 100644 index 0000000..bf1f725 --- /dev/null +++ b/logger.lock @@ -0,0 +1,11 @@ +{ + "lastUpdatedBy": "RunTIme", + "FrontEndDriver": { + "startTime": 1588231747040, + "pid": 26780 + }, + "RunTIme": { + "startTime": 1588233573984, + "pid": 17884 + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 81806b7..6a6fab6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "miwatchkleaner2.0", - "version": "2.0.2", + "version": "2.0.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -116,11 +116,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base64-js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", - "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -129,15 +124,6 @@ "tweetnacl": "^0.14.3" } }, - "bops": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bops/-/bops-0.1.1.tgz", - "integrity": "sha1-Bi4CqNqoAfoQ8uXb5nQM/4Af4X4=", - "requires": { - "base64-js": "0.0.2", - "to-utf8": "0.0.1" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -281,23 +267,6 @@ "path-type": "^4.0.0" } }, - "download-file": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/download-file/-/download-file-0.1.5.tgz", - "integrity": "sha1-ylC6ZNkJSwyHAu+f/5LSGJ4UERc=", - "requires": { - "mkdirp": "^0.5.0" - } - }, - "download-file-with-progressbar": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/download-file-with-progressbar/-/download-file-with-progressbar-1.2.3.tgz", - "integrity": "sha1-he08RTtT6GcXoSGxtMJO67uS4U8=", - "requires": { - "path": "^0.12.7", - "request": "^2.74.0" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -982,15 +951,6 @@ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==" }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1006,6 +966,11 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "perfect-logger": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/perfect-logger/-/perfect-logger-2.0.1.tgz", + "integrity": "sha512-MGjZ4KcKFJ0w2LOvO2kSILZMU2KUOESaIJnI4sJ6qAumEmrRHiJVPx088WgAYnZMnys6gFI2ZP2YbNTL308xkA==" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -1081,11 +1046,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1392,11 +1352,6 @@ "is-number": "^7.0.0" } }, - "to-utf8": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", - "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" - }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -1470,14 +1425,6 @@ "punycode": "^2.1.0" } }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1507,14 +1454,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "zip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip/-/zip-1.2.0.tgz", - "integrity": "sha1-rQrUImUwm+QutW/IYZThfCTmapw=", - "requires": { - "bops": "~0.1.1" - } } } } diff --git a/package.json b/package.json index 21288f1..6944bb1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "get-files-in": "^1.2.0", "inquirer": "^7.1.0", "node-downloader-helper": "^1.0.12", + "perfect-logger": "^2.0.1", "pkg": "^4.4.7", "request-promise-native": "^1.0.8", "shell-exec": "^1.0.2", diff --git a/pages/pages.js b/pages/pages.js index fd92a5b..f7d03fc 100644 --- a/pages/pages.js +++ b/pages/pages.js @@ -10,20 +10,33 @@ const { const getFilesIn = require('get-files-in') const http = require('http') var shell = require('shelljs'); +let logger = require('perfect-logger'); let adbRun +logger.initialize('RunTIme', { + logLevelFile: 0, // Log level for file + logLevelConsole: -1, // Log level for STDOUT/STDERR + logDirectory: 'data/', // Log directory +}); + module.exports = { removeCompatibleApps: async () => { let installedAppList common.header('Remove Installed Apps') + logger.info('Remove Installed Apps') await shellExec(adbRun + ' shell pm list packages -3').then(async function (result) { + logger.info('Packages recieved from watch') if (result.stderr.includes('error')) { + logger.info(result.stderr) console.log(chalk.red('Device not authorised')) common.pause(3000) await shellExec(adbRun + ' kill-server').then(async function (result) { + logger.info('Restarting ADB') + logger.info(result.stdout) console.log('Please reconnect to watch') common.pause(3000) + logger.info('Remove Installed Apps Failed') module.exports.mainMenu() }) } else { @@ -38,19 +51,22 @@ module.exports = { for (let element of value.removeAppsList) { console.log('Removing ' + element) + logger.info('Removing ' + element) const package = element.substring(8) await shellExec(adbRun + ' uninstall ' + package).then(async function (result) { console.log(element + ' - ' + result.stdout); + logger.info(element + ' - ' + result.stdout); }); } - // }); console.log(chalk.green('Removed Selected User Apps')) + logger.info('Removed Selected User Apps') await common.pause(2000) module.exports.mainMenu() } }) }, compatibleApps: async () => { + logger.info("Compatible Apps") common.header('Install Compatible Apps') let compatibleApps let url = "http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/compatibleApps.json"; @@ -64,6 +80,7 @@ module.exports = { res.on("end", () => { try { compatibleApps = JSON.parse(body); + logger.info("Compatible Apps found online") // do something with JSON } catch (error) { console.error(error.message); @@ -85,7 +102,9 @@ module.exports = { override: true, } const dl = new DownloaderHelper(element2.url, './data/apps/', options); - dl.on('end', () => console.log('Downloading Latest ' + element2.name + ' Complete')) + dl.on('end', () => console.log('Downloading Latest ' + element2.name + ' Complete'), + logger.info('Downloading Latest ' + element2.name + ' Complete') + ) await dl.start(); } } @@ -95,52 +114,65 @@ module.exports = { for (let element of apkList) { console.log('Installing ' + element) + logger.info('Installing ' + element) await shellExec(adbRun + ' install -r ' + element).then(async function (result) { console.log(element + ' - ' + result.stdout); + logger.info(element + ' - ' + result.stdout); if (element === "data\\apps\\MoreLocale.apk") { await shellExec(adbRun + ' shell pm grant jp.co.c_lis.ccl.morelocale android.permission.CHANGE_CONFIGURATION').then(function (result) { console.log('moreLocale Activated On Watch'); + logger.info('moreLocale Activated On Watch'); }); } }); } console.log(chalk.green('Compatible Apps Installed')) + logger.info('Compatible Apps Installed') await common.pause(2000) module.exports.mainMenu() }, removeApps: async () => { + logger.info("Remove Apps") common.header('Remove Apps') const value = await inquirer.removeAppsList(); for (let element of value.removeAppsList) { await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + element).then(function (result) { + logger.info('Removing ' + element + ' - ' + result.stdout); console.log('Removing ' + element + ' - ' + result.stdout); }); } console.log(chalk.green('Removal Complete')) await common.pause(2000) + logger.info("Remove Complete") module.exports.mainMenu() }, restoreApps: async () => { + logger.info("Restore Apps") common.header('Restore Apps') const value = await inquirer.removeAppsList(); for (let element of value.removeAppsList) { await shellExec(adbRun + ' shell cmd package install-existing ' + element).then(function (result) { + logger.info('Restoring ' + element + ' - ' + result.stdout); console.log('Restoring ' + element + ' - ' + result.stdout); }); } console.log(chalk.green('Restore Complete')) await common.pause(2000) + logger.info("Restore Apps Complete") module.exports.mainMenu() }, connectWifi: async () => { + logger.info("Connect Wifi") const miwatchData = JSON.parse(fs.readFileSync('./data/MiWatch.json', 'utf8')); common.header('Connect Wifi') if (miwatchData.ipAddress !== "") { console.log('Trying to connect with stored ipAddress') shellExec(adbRun + ' connect ' + miwatchData.ipAddress).then(async function (result) { + logger.info("Connect Wifi Result " + result.stdout) if (result.stdout.includes('already connected') || result.stdout.includes('connected to ')) { console.log(chalk.green('MiWatch Connected')) await common.pause(3000) + logger.info("Connect Wifi Complete") module.exports.mainMenu() } else { console.log(chalk.red('MiWatch not found')) @@ -152,13 +184,16 @@ module.exports = { } }).catch() } else { + const value = await inquirer.connectWifi(); const miWatchIpaddress = value.connectWifi shellExec(adbRun + ' connect ' + miWatchIpaddress).then(async function (result) { + logger.info("Connect Wifi Result " + result.stdout) if (result.stdout.includes('already connected') || result.stdout.includes('connected to ')) { console.log(chalk.green('MiWatch Connected')) files.writeIpAddress(miWatchIpaddress) await common.pause(3000) + logger.info("Connect Wifi Complete") module.exports.mainMenu() } else { console.log(chalk.red('MiWatch not found')) @@ -177,6 +212,7 @@ module.exports = { } else { adbRun = './adb' } + logger.info(process.platform + " detected") const mainMenuSelection = await inquirer.mainMenu(); switch (mainMenuSelection.mainMenu) { case 'connect to miwatch via wifi':