-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.js
More file actions
90 lines (79 loc) · 2.8 KB
/
cli.js
File metadata and controls
90 lines (79 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env node
/**
* android-intelligence CLI -- Quick Android device commands
* Usage: node cli.js device-info
* node cli.js list-apps
* node cli.js kill <package>
* node cli.js screen <0-255>
*/
const { execSync } = require('child_process');
function adb(cmd) {
try {
return execSync(`adb shell ${cmd}`, { encoding: 'utf-8' }).trim();
} catch(e) {
return '';
}
}
const commands = {
'device-info': () => {
console.log('\n📱 Device Info:');
console.log(` Model: ${adb('getprop ro.product.model')}`);
console.log(` Android: ${adb('getprop ro.build.version.release')}`);
console.log(` RAM: ${adb('cat /proc/meminfo | grep MemTotal')}`);
console.log(` Storage: ${adb('df -h /data | tail -1')}`);
console.log(` Battery: ${adb('dumpsys battery | grep level').split(':')[1]?.trim()}%\n`);
},
'list-apps': () => {
console.log('\n📦 Installed user apps:');
const apps = adb('pm list packages -3').split('\n').map(l => l.replace('package:', ''));
apps.forEach((a, i) => {
if (i < 20) console.log(` ${i+1}. ${a}`);
});
console.log(` ... ${apps.length} total\n`);
},
'top-battery': () => {
console.log('\n🔋 Top battery hogs:');
const output = adb('dumpsys batterystats | grep "uid=" | head -10');
output.split('\n').forEach(line => {
if (line.includes('uid=')) console.log(` ${line.substring(0, 60)}`);
});
console.log();
},
'network': () => {
console.log('\n🌐 Network info:');
console.log(` IP: ${adb("ip route | grep src | awk '{print $NF}' | head -1")}`);
console.log(` Hostname: ${adb('getprop net.hostname')}`);
const dns = adb('getprop net.dns1');
console.log(` DNS: ${dns}\n`);
},
'kill': (pkg) => {
if (!pkg) return console.log('Usage: node cli.js kill <package>');
adb(`am force-stop ${pkg}`);
console.log(`✓ Killed ${pkg}\n`);
},
'screen': (level) => {
level = parseInt(level) || 150;
if (level < 0 || level > 255) return console.log('Brightness: 0-255');
adb(`settings put system screen_brightness ${level}`);
console.log(`✓ Screen brightness: ${level}\n`);
},
'help': () => {
console.log(`
Android Intelligence CLI
Commands:
device-info Show device details
list-apps List installed apps
top-battery Top battery drain culprits
network Network info
kill <package> Force-stop an app
screen <0-255> Set brightness
help Show this menu
`);
}
};
const [cmd, arg] = process.argv.slice(2);
if (!cmd || !commands[cmd]) {
commands.help();
} else {
commands[cmd](arg);
}