making progress
This commit is contained in:
parent
3658fd26aa
commit
73ee55d913
31
lang/en.json
Normal file
31
lang/en.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"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",
|
||||
"removing": "Removing",
|
||||
"installing": "Installing",
|
||||
"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"
|
||||
}
|
91
lib/adb.js
91
lib/adb.js
@ -1,24 +1,85 @@
|
||||
const gfin = require('get-files-in')
|
||||
const logger = require('perfect-logger');
|
||||
const shellExec = require('shell-exec')
|
||||
const Language = require("@shypes/language-translator");
|
||||
const inquirer = require('../lib/inquirer');
|
||||
const common = require('./common')
|
||||
|
||||
|
||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||
adbRun = 'adb'
|
||||
} else {
|
||||
adbRun = './adb'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getListOfAPk: () => {
|
||||
this.apkListToInstall = gfin('./data/apps', matchFiletypes = ["apk"], checkSubDirectories = false)
|
||||
const result = gfin('./data/apps', matchFiletypes = ["apk"], checkSubDirectories = false)
|
||||
return result
|
||||
},
|
||||
installApk: async () => {
|
||||
await module.exports.getListOfAPk()
|
||||
for (let element of this.apkListToInstall) {
|
||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||
await shellExec('adb install -r ' + element).then(function (result) {
|
||||
console.log('Installing ' + element + ' - ' + result.stdout);
|
||||
});
|
||||
} else {
|
||||
await shellExec('./adb install -r ' + element).then(function (result) {
|
||||
console.log('Installing ' + element + ' - ' + result.stdout);
|
||||
});
|
||||
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')));
|
||||
}
|
||||
}
|
||||
// console.log(chalk.green('Removal Complete'))
|
||||
},
|
||||
console.log(element + ' - ' + result.stdout);
|
||||
logger.info(element + ' - ' + result.stdout);
|
||||
|
||||
if (element === "data\\apps\\simpleweather_base.apk") {
|
||||
await common.downloadFile('http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/Others/simpleweather_split_config.armeabi_v7a.apk', './data/apps/simpleweather_split_config.armeabi_v7a.apk')
|
||||
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'));
|
||||
})
|
||||
}
|
||||
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'));
|
||||
})
|
||||
}
|
||||
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'));
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
removeApk: async (package) => {
|
||||
result = await shellExec(adbRun + ' uninstall ' + package)
|
||||
console.log(package + ' - ' + result.stdout);
|
||||
logger.info(package + ' - ' + result.stdout);
|
||||
},
|
||||
getInstalledPacakges: async () => {
|
||||
result = await shellExec(adbRun + ' shell pm list packages -3')
|
||||
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')))
|
||||
common.pause(3000)
|
||||
await shellExec(adbRun + ' kill-server').then(async function (result) {
|
||||
logger.info(await Language.get('restarting_adb'))
|
||||
logger.info(result.stdout)
|
||||
console.log(await Language.get('please_reconnect_to_watch'))
|
||||
common.pause(3000)
|
||||
logger.info(await Language.get('remove_installed_apps_failed'))
|
||||
module.exports.mainMenu()
|
||||
})
|
||||
} else {
|
||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||
installedAppList = result.stdout.split('\r\n'); // split string on comma space
|
||||
installedAppList.splice(-1, 1)
|
||||
} else {
|
||||
installedAppList = result.stdout.split('\n'); // split string on comma space
|
||||
installedAppList.splice(-1, 1)
|
||||
}
|
||||
const value = await inquirer.installedApps(installedAppList);
|
||||
return value
|
||||
}
|
||||
},
|
||||
};
|
@ -2,24 +2,30 @@ const inquirer = require("inquirer");
|
||||
const files = require("./files");
|
||||
const common = require("./common");
|
||||
|
||||
// let compatibleApps
|
||||
const Language = require("@shypes/language-translator");
|
||||
|
||||
Language._({
|
||||
default_lang: "en",
|
||||
ext: ".json",
|
||||
__basedir: "./",
|
||||
langFolder: 'lang'
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
mainMenu: () => {
|
||||
mainMenu: async () => {
|
||||
const questions = [{
|
||||
type: "list",
|
||||
name: "mainMenu",
|
||||
message: "What do you want to do?",
|
||||
message: await Language.get('main_menu_question'),
|
||||
choices: [
|
||||
// "Connect to MiWatch",
|
||||
"1-Click Karl0ss Klean",
|
||||
"Remove Xiaomi Apps",
|
||||
"Restore Xiaomi Apps",
|
||||
"Install Compatible Apps",
|
||||
"Restore ANY app",
|
||||
"Batch Install APKs",
|
||||
"Batch Remove Installed Apps",
|
||||
"Quit"
|
||||
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();
|
||||
@ -27,11 +33,11 @@ module.exports = {
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
},
|
||||
connectionType: () => {
|
||||
connectionType: async () => {
|
||||
const questions = [{
|
||||
type: "list",
|
||||
name: "connection",
|
||||
message: "How do you want to connect?",
|
||||
message: await Language.get('connection_type_message'),
|
||||
choices: [
|
||||
"USB",
|
||||
"Wifi"
|
||||
@ -42,11 +48,11 @@ module.exports = {
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
},
|
||||
connectWifi: () => {
|
||||
connectWifi: async () => {
|
||||
const questions = [{
|
||||
type: "input",
|
||||
name: "connectWifi",
|
||||
message: "What is your MiWatch IpAdress?",
|
||||
message: await Language.get('connect_wifi_message'),
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
},
|
||||
@ -56,7 +62,7 @@ module.exports = {
|
||||
const questions = [{
|
||||
type: "checkbox",
|
||||
name: "removeAppsList",
|
||||
message: "What apps do you want to restore?",
|
||||
message: await Language.get('restore_app_message'),
|
||||
choices: packages.apps,
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
@ -70,7 +76,7 @@ module.exports = {
|
||||
const questions = [{
|
||||
type: "checkbox",
|
||||
name: "removeAppsList",
|
||||
message: "What apps do you want to Install?",
|
||||
message: await Language.get('install_compatible_apps_message'),
|
||||
choices: appList,
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
@ -79,7 +85,7 @@ module.exports = {
|
||||
const questions = [{
|
||||
type: "checkbox",
|
||||
name: "removeAppsList",
|
||||
message: "What Installed apps do you want to remove?",
|
||||
message: await Language.get('remove_installed_apps_message'),
|
||||
choices: installedApps,
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
@ -88,7 +94,7 @@ module.exports = {
|
||||
const questions = [{
|
||||
type: "input",
|
||||
name: "restoreAnyApp",
|
||||
message: "What App do you want to restore?",
|
||||
message: await Language.get('restore_any_app_message'),
|
||||
},];
|
||||
return inquirer.prompt(questions);
|
||||
},
|
||||
|
26
package-lock.json
generated
26
package-lock.json
generated
@ -45,6 +45,11 @@
|
||||
"resolved": "https://registry.npmjs.org/@peterpanhihi/tiny/-/tiny-2.0.0.tgz",
|
||||
"integrity": "sha512-usAoksj49559JLAsQXmrE5wOV6A055icErp8jpJDCicfojwEVPaSLk5EZ1EXhcgIuqjSNkzCOXu0gSdm3Std+w=="
|
||||
},
|
||||
"@shypes/language-translator": {
|
||||
"version": "2.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@shypes/language-translator/-/language-translator-2.0.15.tgz",
|
||||
"integrity": "sha512-et4HsjzPQUH29nPKlRg3E/2Dr84lO8POJsfWezK9DnLK8nGO42b59Ug7RtwsRy28gxHWr+m1lgzY8JKsVlTlSQ=="
|
||||
},
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||
@ -254,14 +259,6 @@
|
||||
"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",
|
||||
@ -880,11 +877,6 @@
|
||||
"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",
|
||||
@ -1100,14 +1092,6 @@
|
||||
"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",
|
||||
|
@ -16,6 +16,7 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@peterpanhihi/tiny": "^2.0.0",
|
||||
"@shypes/language-translator": "^2.0.15",
|
||||
"chalk": "^4.0.0",
|
||||
"clear": "^0.1.0",
|
||||
"clui": "^0.3.6",
|
||||
|
@ -6,7 +6,8 @@ const files = require('../lib/files')
|
||||
const getFilesIn = require('get-files-in')
|
||||
let logger = require('perfect-logger');
|
||||
const globalVariables = require('../lib/globalVars');
|
||||
|
||||
const Language = require("@shypes/language-translator");
|
||||
const adb = require('../lib/adb');
|
||||
|
||||
logger.info(process.platform + " detected")
|
||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||
@ -23,52 +24,26 @@ logger.initialize('RunTIme', {
|
||||
|
||||
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 {
|
||||
if (process.platform === 'win32' || process.platform === 'win64') {
|
||||
installedAppList = result.stdout.split('\r\n'); // split string on comma space
|
||||
installedAppList.splice(-1, 1)
|
||||
} else {
|
||||
installedAppList = result.stdout.split('\n'); // split string on comma space
|
||||
installedAppList.splice(-1, 1)
|
||||
}
|
||||
const value = await inquirer.installedApps(installedAppList);
|
||||
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('Removing ' + element)
|
||||
logger.info('Removing ' + element)
|
||||
console.log(await Language.get('removing') + ' ' + element)
|
||||
logger.info(await Language.get('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);
|
||||
});
|
||||
await adb.removeApk(package)
|
||||
}
|
||||
console.log(chalk.green('Removed Selected User Apps'))
|
||||
logger.info('Removed Selected User Apps')
|
||||
console.log(chalk.green(await Language.get('remove_selected_user_apps')))
|
||||
logger.info(await Language.get('remove_selected_user_apps'))
|
||||
await common.pause(2000)
|
||||
module.exports.mainMenu()
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
compatibleApps: async () => {
|
||||
logger.info("Compatible Apps")
|
||||
common.header('Install Compatible Apps')
|
||||
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();
|
||||
@ -84,45 +59,15 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
|
||||
const apkList = await getFilesIn('./data/apps', matchFiletypes = ['apk'], checkSubDirectories = false)
|
||||
const apkList = await adb.getListOfAPk()
|
||||
|
||||
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('Error - Device not authorised'));
|
||||
console.log(await Language.get('installing') + ' ' + element)
|
||||
logger.info(await Language.get('installing') + ' ' + element)
|
||||
await adb.installApk(element)
|
||||
}
|
||||
console.log(element + ' - ' + result.stdout);
|
||||
logger.info(element + ' - ' + result.stdout);
|
||||
|
||||
if (element === "data\\apps\\simpleweather_base.apk") {
|
||||
await common.downloadFile('http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/Others/simpleweather_split_config.armeabi_v7a.apk', './data/apps/simpleweather_split_config.armeabi_v7a.apk')
|
||||
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(function (result) {
|
||||
console.log(result)
|
||||
console.log('simpleWeather Activated On Watch');
|
||||
logger.info('simpleWeather 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(function (result) {
|
||||
console.log('moreLocale Activated On Watch');
|
||||
logger.info('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(function (result) {
|
||||
console.log(result)
|
||||
console.log('Alberto Locale Activated On Watch');
|
||||
logger.info('Alberto Locale Activated On Watch');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
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'))
|
||||
await common.pause(2000)
|
||||
module.exports.mainMenu()
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user