Jelajahi Sumber

reworking for multilingual

karl.hudgell 4 tahun lalu
induk
melakukan
688167f88e
6 mengubah file dengan 191 tambahan dan 148 penghapusan
  1. 0 1
      app.js
  2. 35 27
      lang/en.json
  3. 13 13
      lib/adb.js
  4. 27 2
      lib/common.js
  5. 15 15
      lib/inquirer.js
  6. 101 90
      pages/pages.js

+ 0 - 1
app.js

@@ -1,4 +1,3 @@
 const pages = require('./pages/pages')
 
-
 pages.connectWatch();

+ 35 - 27
lang/en.json

@@ -1,32 +1,40 @@
 {
-    "main_menu_question": "What do you want to do?",
-    "main_menu_item_1": "1-Click Karl0ss Klean",
-    "main_menu_item_2": "Remove Xiaomi Apps",
-    "main_menu_item_3": "Restore Xiaomi Apps",
-    "main_menu_item_4": "Install Compatible Apps",
-    "main_menu_item_5": "Restore ANY app",
-    "main_menu_item_6": "Batch Install APKs",
-    "main_menu_item_7": "Batch Remove Installed Apps",
-    "main_menu_item_8": "Quit",
-    "connection_type_message": "How do you want to connect?",
-    "connect_wifi_message":"What is your MiWatch IpAdress?",
-    "restore_app_message": "What apps do you want to restore?",
-    "install_compatible_apps_message": "What apps do you want to Install?",
-    "remove_installed_apps_message": "What Installed apps do you want to remove?",
-    "restore_any_app_message": "What App do you want to restore?",
-    "remove_installed_apps_header": "Remove Installed Apps",
-    "packages_recieved_from_watch": "Packages recieved from watch",
-    "device_not_authorised": "Device not authorised",
-    "restarting_adb": "Restarting ADB",
-    "please_reconnect_to_watch": "Please reconnect to watch",
-    "remove_installed_apps_failed": "Remove Installed Apps Failed",
+    "main-menu-question": "What do you want to do?",
+    "main-menu-item-1": "1-Click Karl0ss Klean",
+    "main-menu-item-2": "Remove Xiaomi Apps",
+    "main-menu-item-3": "Restore Xiaomi Apps",
+    "main-menu-item-4": "Install Compatible Apps",
+    "main-menu-item-5": "Restore ANY app",
+    "main-menu-item-6": "Batch Install APKs",
+    "main-menu-item-7": "Batch Remove Installed Apps",
+    "main-menu-item-8": "Quit",
+    "connection-type-message": "How do you want to connect?",
+    "connect-wifi-message":"What is your MiWatch IpAdress?",
+    "restore-app-message": "What apps do you want to restore?",
+    "install-compatible-apps-message": "What apps do you want to Install?",
+    "remove-installed-apps-message": "What Installed apps do you want to remove?",
+    "restore-any-app-message": "What App do you want to restore?",
+    "header-remove-installed-apps": "Remove Installed Apps",
+    "packages-recieved-from-watch": "Packages recieved from watch",
+    "device-not-authorised": "Device not authorised",
+    "restarting-adb": "Restarting ADB",
+    "please-reconnect-to-watch": "Please reconnect to watch",
+    "remove-installed-apps-failed": "Remove Installed Apps Failed",
     "removing": "Removing",
+    "removal-complete": "Removal Complete",
     "installing": "Installing",
     "restoring": "Restoring",
-    "remove_selected_user_apps": "Removed Selected User Apps",
-    "install_compatible_apps_header": "Install Compatible Apps",
-    "simple_weather_activated_on_watch": "simpleWeather Activated On Watch",
-    "morelocale_activated_on_watch": "moreLocale Activated On Watch",
-    "alberto_locale_activated_on_watch": "Alberto Locale Activated On Watch",
-    "compatible_apps_installed": "Compatible Apps Installed"
+    "remove-selected-user-apps": "Removed Selected User Apps",
+    "install-compatible-apps-header": "Install Compatible Apps",
+    "simple-weather-activated-on-watch": "simpleWeather Activated On Watch",
+    "morelocale-activated-on-watch": "moreLocale Activated On Watch",
+    "alberto-locale-activated-on-watch": "Alberto Locale Activated On Watch",
+    "compatible-apps-installed": "Compatible Apps Installed",
+    "compatible-apps": "Compatible Apps",
+    "remove-xiaomi-apps": "Remove Xiaomi Apps",
+    "downloading-compatible-apps": "Downloading Compatible Apps",
+    "installing-apps": "Installing Apps",
+    "downloading-latest": "Downloading Latest",
+    "complete": "Complete",
+    "failed": "Failed"
 }

+ 13 - 13
lib/adb.js

@@ -18,8 +18,8 @@ module.exports = {
   installApk: async (element) => {
     result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
       if (result.stderr != '') {
-        logger.info(await Language.get('device_not_authorised'));
-        console.log(chalk.redBright(await Language.get('device_not_authorised')));
+        logger.info(await Language.get('device-not-authorised'));
+        console.log(chalk.redBright(await Language.get('device-not-authorised')));
       }
       console.log(element + ' - ' + result.stdout);
       logger.info(element + ' - ' + result.stdout);
@@ -29,21 +29,21 @@ module.exports = {
         await common.downloadFile('http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/Others/simpleweather_split_config.xhdpi.apk', './data/apps/simpleweather_split_config.xhdpi.apk')
         await shellExec(adbRun + ' install-multiple "data\\apps\\simpleweather_base.apk" "data\\apps\\simpleweather_split_config.armeabi_v7a.apk" "data\\apps\\simpleweather_split_config.xhdpi.apk"').then(async function (result) {
           console.log(result)
-          console.log(await Language.get('simple_weather_activated_on_watch'));
-          logger.info(await Language.get('simple_weather_activated_on_watch'));
+          console.log(await Language.get('simple-weather-activated-on-watch'));
+          logger.info(await Language.get('simple-weather-activated-on-watch'));
         })
       }
       if (element === "data\\apps\\MoreLocale.apk") {
         await shellExec(adbRun + ' shell pm grant jp.co.c_lis.ccl.morelocale android.permission.CHANGE_CONFIGURATION').then(async function (result) {
-          console.log(await Language.get('morelocale_activated_on_watch'));
-          logger.info(await Language.get('morelocale_activated_on_watch'));
+          console.log(await Language.get('morelocale-activated-on-watch'));
+          logger.info(await Language.get('morelocale-activated-on-watch'));
         })
       }
       if (element === "data\\apps\\com.alberto.locale.apk") {
         await shellExec(adbRun + ' shell pm grant com.alberto.locale android.permission.CHANGE_CONFIGURATION && ' + adbRun + ' shell am start -n com.alberto.locale/com.alberto.locale.MainActivity && ' + adbRun + ' shell pm grant com.alberto.locale android.permission.CHANGE_CONFIGURATION').then(async function (result) {
           console.log(result)
-          console.log(await Language.get('alberto_locale_activated_on_watch'));
-          logger.info(await Language.get('alberto_locale_activated_on_watch'));
+          console.log(await Language.get('alberto-locale-activated-on-watch'));
+          logger.info(await Language.get('alberto-locale-activated-on-watch'));
         });
       }
     });
@@ -93,17 +93,17 @@ module.exports = {
   },
   getInstalledPacakges: async () => {
     result = await shellExec(adbRun + ' shell pm list packages -3')
-    logger.info(await Language.get('packages_recieved_from_watch'))
+    logger.info(await Language.get('packages-recieved-from-watch'))
     if (result.stderr.includes('error')) {
       logger.info(result.stderr)
-      console.log(chalk.red(await Language.get('device_not_authorised')))
+      console.log(chalk.red(await Language.get('device-not-authorised')))
       common.pause(3000)
       await shellExec(adbRun + ' kill-server').then(async function (result) {
-        logger.info(await Language.get('restarting_adb'))
+        logger.info(await Language.get('restarting-adb'))
         logger.info(result.stdout)
-        console.log(await Language.get('please_reconnect_to_watch'))
+        console.log(await Language.get('please-reconnect-to-watch'))
         common.pause(3000)
-        logger.info(await Language.get('remove_installed_apps_failed'))
+        logger.info(await Language.get('remove-installed-apps-failed'))
         module.exports.mainMenu()
       })
     } else {

+ 27 - 2
lib/common.js

@@ -5,11 +5,13 @@ const fs = require('fs')
 var pjson = require('../package.json');
 const fetch = require('node-fetch');
 var shell = require('shelljs');
+const logger = require('perfect-logger');
+const Language = require("@shypes/language-translator");
 
 const globalVariables = require('../lib/globalVars');
 
 module.exports = {
-    header: (page) => {
+    header: async (page) => {
         clear();
         console.log(
             chalk.red(
@@ -26,7 +28,7 @@ module.exports = {
                 '-------------------------------------------------------------------------------------------------------'
             )
         )
-        console.log(chalk.blue(page))
+        console.log(chalk.blue(await Language.get(page)))
         module.exports.connectionCheck()
         console.log(chalk.red('----------'))
     },
@@ -66,4 +68,27 @@ module.exports = {
     clearApkFolder: async () => {
         await shell.rm('-rf', './data/apps/*.apk');
     },
+    log: async (item) => {
+        logger.info(await Language.get(item, 'en'))
+    },
+    print: async (item, colour) => {
+        switch (colour) {
+            case 'green':
+                console.log(chalk.green(await Language.get(item)))
+                break;
+            case 'red':
+                console.log(chalk.redBright(await Language.get(item)))
+                break;
+            case 'whiteBright':
+                console.log(chalk.whiteBright(await Language.get(item)))
+                break;
+            default:
+                console.log(chalk.white(await Language.get(item)))
+                break;
+        }
+    },
+    dualLog: async (item, colour) => {
+        await module.exports.log(item)
+        await module.exports.print(item, colour)
+    }
 }

+ 15 - 15
lib/inquirer.js

@@ -16,16 +16,16 @@ module.exports = {
     const questions = [{
       type: "list",
       name: "mainMenu",
-      message: await Language.get('main_menu_question'),
+      message: await Language.get('main-menu-question'),
       choices: [
-        await Language.get('main_menu_item_1'),
-        await Language.get('main_menu_item_2'),
-        await Language.get('main_menu_item_3'),
-        await Language.get('main_menu_item_4'),
-        await Language.get('main_menu_item_5'),
-        await Language.get('main_menu_item_6'),
-        await Language.get('main_menu_item_7'),
-        await Language.get('main_menu_item_8'),
+        await Language.get('main-menu-item-1'),
+        await Language.get('main-menu-item-2'),
+        await Language.get('main-menu-item-3'),
+        await Language.get('main-menu-item-4'),
+        await Language.get('main-menu-item-5'),
+        await Language.get('main-menu-item-6'),
+        await Language.get('main-menu-item-7'),
+        await Language.get('main-menu-item-8'),
       ],
       filter: function (val) {
         return val.toLowerCase();
@@ -37,7 +37,7 @@ module.exports = {
     const questions = [{
       type: "list",
       name: "connection",
-      message: await Language.get('connection_type_message'),
+      message: await Language.get('connection-type-message'),
       choices: [
         "USB",
         "Wifi"
@@ -52,7 +52,7 @@ module.exports = {
     const questions = [{
       type: "input",
       name: "connectWifi",
-      message: await Language.get('connect_wifi_message'),
+      message: await Language.get('connect-wifi-message'),
     },];
     return inquirer.prompt(questions);
   },
@@ -62,7 +62,7 @@ module.exports = {
     const questions = [{
       type: "checkbox",
       name: "removeAppsList",
-      message: await Language.get('restore_app_message'),
+      message: await Language.get('restore-app-message'),
       choices: packages.apps,
     },];
     return inquirer.prompt(questions);
@@ -76,7 +76,7 @@ module.exports = {
     const questions = [{
       type: "checkbox",
       name: "removeAppsList",
-      message: await Language.get('install_compatible_apps_message'),
+      message: await Language.get('install-compatible-apps-message'),
       choices: appList,
     },];
     return inquirer.prompt(questions);
@@ -85,7 +85,7 @@ module.exports = {
     const questions = [{
       type: "checkbox",
       name: "removeAppsList",
-      message: await Language.get('remove_installed_apps_message'),
+      message: await Language.get('remove-installed-apps-message'),
       choices: installedApps,
     },];
     return inquirer.prompt(questions);
@@ -94,7 +94,7 @@ module.exports = {
     const questions = [{
       type: "input",
       name: "restoreAnyApp",
-      message: await Language.get('restore_any_app_message'),
+      message: await Language.get('restore-any-app-message'),
     },];
     return inquirer.prompt(questions);
   },

+ 101 - 90
pages/pages.js

@@ -20,67 +20,63 @@ logger.initialize('RunTIme', {
 });
 
 module.exports = {
-    removeCompatibleApps: async () => {
-        common.header(await Language.get('remove_installed_apps_header'))
-        logger.info(await Language.get('remove_installed_apps_header'))
-
-        value = await adb.getInstalledPacakges()
-
-        for (let element of value.removeAppsList) {
-            console.log(await Language.get('removing') + ' ' + element)
-            logger.info(await Language.get('removing') + ' ' + element)
-            const package = element.substring(8)
-            await adb.removeApk(package)
+    oneClick: async () => {
+        common.log('main-menu-item-1')
+        common.header('main-menu-item-1')
+        common.print('remove-xiaomi-apps', 'whiteBright')
+        const removalPackagesList = files.loadPackageList()
+        for (let package of removalPackagesList.apps) {
+            await adb.removeXiaomiApk(package)
         }
-        console.log(chalk.green(await Language.get('remove_selected_user_apps')))
-        logger.info(await Language.get('remove_selected_user_apps'))
+        common.print('removal-complete', 'green')
         await common.pause(2000)
-        module.exports.mainMenu()
-
-    },
-    installCompatibleApps: async () => {
-        logger.info(await Language.get('install_compatible_apps_header'))
-        common.header(await Language.get('install_compatible_apps_header'))
-
-        const compatibleApps = await common.getCompatibleAppsList()
-        const value = await inquirer.compatibleApps();
-
+        common.log('removal-complete')
+        common.log('compatible-apps')
+        
         await common.clearApkFolder()
 
-        for (let element of value.removeAppsList) {
-            for (let element2 of compatibleApps) {
-                if (element === element2.name) {
-                    newName = element.replace(/\s/g, '');
-                    await common.downloadFile(element2.url, './data/apps/' + newName + '.apk')
+        const compatibleApps = await common.getCompatibleAppsList()
+        
+        console.log(chalk.whiteBright('----------'))
+        common.print('downloading-compatible-apps', 'whiteBright')
+        
+        for (const package of compatibleApps) {
+            if (package.Klean === "X") {
+                try {
+                    newPacakgeName = package.name.replace(/\s/g, '');
+                    await common.downloadFile(package.url, './data/apps/' + newPacakgeName + '.apk')
+                    logger.info(await Language.get('downloading-latest', 'en') + ' ' + package.name + ' ' + chalk.green(await Language.get('complete', 'en')))
+                    console.log(await Language.get('downloading-latest') + ' ' + package.name + ' ' + await Language.get('complete'))
+                } catch (error) {
+                    logger.info(await Language.get('downloading-latest', 'en') + ' ' + package.name + ' ' + chalk.red(await Language.get('failed', 'en')))
+                    console.log(await Language.get('downloading-latest') + ' ' + package.name + ' ' + await Language.get('failed'))
                 }
             }
         }
-
         const apkList = await files.getListOfAPk('./data/apps')
-
-        for (let package of apkList) {
-            console.log(await Language.get('installing') + ' ' + package)
-            logger.info(await Language.get('installing') + ' ' + package)
-            await adb.installApk(package)
+        console.log(chalk.whiteBright('----------'))
+        common.print('installing-apps', 'whiteBright')
+        for (let element of apkList) {
+            await adb.installApk(element)
         }
-        console.log(chalk.green(await Language.get('compatible_apps_installed')))
-        logger.info(await Language.get('compatible_apps_installed'))
+        common.dualLog('compatible-apps-installed', 'green')
         await common.pause(2000)
         module.exports.mainMenu()
     },
-    removeApps: async () => {
-        logger.info("Remove Apps")
-        common.header('Remove Apps')
+
+    removeXiaomiApps: async () => {
+        common.header(await Language.get('main-menu-item-2'))
+        common.log('main-menu-item-2', 'green')
         const value = await inquirer.removeAppsList();
         for (let package of value.removeAppsList) {
             await adb.removeXiaomiApk(package)
         }
-        console.log(chalk.green('Removal Complete'))
+        common.dualLog('removal-complete', 'green')
         await common.pause(2000)
-        logger.info("Remove Complete")
         module.exports.mainMenu()
     },
-    restoreApps: async () => {
+
+    restoreXiaomiApps: async () => {
         logger.info("Restore Apps")
         common.header('Restore Apps')
         const value = await inquirer.removeAppsList();
@@ -92,56 +88,38 @@ module.exports = {
         logger.info("Restore Apps Complete")
         module.exports.mainMenu()
     },
-    connectWatch: async () => {
-        logger.info("Connect to watch")
-        common.header('Connect to watch')
-        const value = await inquirer.connectionType()
-        connected = await adb.watchConnection(value)
-        if (connected != true) {
-            module.exports.connectWatch()
-        } else {
-            module.exports.mainMenu()
-        }
-    },
-    oneClick: async () => {
-        logger.info("1-Click Karl0ss Klean")
-        common.header('1-Click Karl0ss Klean')
-        const removalPackagesList = files.loadPackageList()
-        for (let package of removalPackagesList.apps) {
-            await adb.removeXiaomiApk(package)
-        }
-        console.log(chalk.green('Removal Complete'))
-        await common.pause(2000)
-        logger.info("Remove Complete")
-        logger.info("Compatible Apps")
 
-        await common.clearApkFolder()
+    installCompatibleApps: async () => {
+        logger.info(await Language.get('install-compatible-apps-header', 'en'))
+        common.header(await Language.get('install-compatible-apps-header'))
 
         const compatibleApps = await common.getCompatibleAppsList()
-        console.log(chalk.green('Download Compatible APKS'))
+        const value = await inquirer.compatibleApps();
 
-        for (const package of compatibleApps) {
-            if (package.Klean === "X") {
-                try {
-                    newPacakgeName = package.name.replace(/\s/g, '');
-                    await common.downloadFile(package.url, './data/apps/' + newPacakgeName + '.apk')
-                    logger.info('Downloading Latest ' + package.name + ' Complete')
-                    console.log('Downloading Latest ' + package.name + ' Complete')
-                } catch (error) {
-                    logger.info('Downloading Latest ' + package.name + ' FAILED')
+        await common.clearApkFolder()
+
+        for (let element of value.removeAppsList) {
+            for (let element2 of compatibleApps) {
+                if (element === element2.name) {
+                    newName = element.replace(/\s/g, '');
+                    await common.downloadFile(element2.url, './data/apps/' + newName + '.apk')
                 }
             }
         }
+
         const apkList = await files.getListOfAPk('./data/apps')
-        console.log(chalk.green('Install Apks'))
-        for (let element of apkList) {
-            await adb.installApk(element)
+
+        for (let package of apkList) {
+            console.log(await Language.get('installing') + ' ' + package)
+            logger.info(await Language.get('installing', 'en') + ' ' + package)
+            await adb.installApk(package)
         }
-        console.log(chalk.green('Compatible Apps Installed'))
-        logger.info('Compatible Apps Installed')
+        console.log(chalk.green(await Language.get('compatible-apps-installed')))
+        logger.info(await Language.get('compatible-apps-installed', 'en'))
         await common.pause(2000)
         module.exports.mainMenu()
     },
+
     restoreAnyApp: async () => {
         logger.info("Restore Any App")
         common.header('Restore Any App')
@@ -152,13 +130,14 @@ 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 files.getListOfAPk('./my_apk/')
+        let apkList = await files.getListOfAPk('./my-apk/')
         await files.renameLocalApk(apkList)
-        apkList = await files.getListOfAPk('./my_apk/')
+        apkList = await files.getListOfAPk('./my-apk/')
 
         for (let element of apkList) {
             console.log('Installing ' + element)
@@ -170,34 +149,66 @@ module.exports = {
         await common.pause(2000)
         module.exports.mainMenu()
     },
+
+    batchRemoveInstalledApps: async () => {
+        common.header(await Language.get('header-remove-installed-apps'))
+        logger.info(await Language.get('header-remove-installed-apps', 'en'))
+
+        value = await adb.getInstalledPacakges()
+
+        for (let element of value.removeAppsList) {
+            console.log(await Language.get('removing') + ' ' + element)
+            logger.info(await Language.get('removing') + ' ' + element)
+            const package = element.substring(8)
+            await adb.removeApk(package)
+        }
+        console.log(chalk.green(await Language.get('remove-selected-user-apps')))
+        logger.info(await Language.get('remove-selected-user-apps', 'en'))
+        await common.pause(2000)
+        module.exports.mainMenu()
+
+    },
+
+    connectWatch: async () => {
+        logger.info("Connect to watch")
+        common.header('Connect to watch')
+        const value = await inquirer.connectionType()
+        connected = await adb.watchConnection(value)
+        if (connected != true) {
+            module.exports.connectWatch()
+        } else {
+            module.exports.mainMenu()
+        }
+    },
+
     mainMenu: async () => {
         common.header('Main Menu')
         const mainMenuSelection = await inquirer.mainMenu();
         switch (mainMenuSelection.mainMenu) {
-            case 'connect to miwatch':
-                module.exports.connectWatch()
-                break;
             case '1-click karl0ss klean':
                 module.exports.oneClick()
                 break;
             case 'remove xiaomi apps':
-                module.exports.removeApps()
+                module.exports.removeXiaomiApps()
                 break;
             case 'restore xiaomi apps':
-                module.exports.restoreApps()
+                module.exports.restoreXiaomiApps()
                 break;
             case 'install compatible apps':
                 module.exports.installCompatibleApps()
                 break;
-            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 'batch remove installed apps':
+                module.exports.batchRemoveInstalledApps()
+                break;
+            case 'connect to miwatch':
+                module.exports.connectWatch()
+                break;
             case 'quit':
                 break;
             default: