-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathadb_install.py
50 lines (40 loc) · 1.39 KB
/
adb_install.py
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
import argparse
import os
import sys
from voussoirkit import interactive
from voussoirkit import pathclass
from voussoirkit import pipeable
from voussoirkit import stringtools
from voussoirkit import vlogging
log = vlogging.getLogger(__name__, 'adbinstall')
def adbinstall_argparse(args):
patterns = pipeable.input_many(args.apks, skip_blank=True, strip=True)
apks = pathclass.glob_many_files(patterns)
installs = []
for apk in apks:
apk = pathclass.Path(apk)
if apk.is_dir:
files = apk.glob('*.apk')
files.sort(key=lambda x: stringtools.natural_sorter(x.basename.lower()))
apk = files[-1]
installs.append(apk)
if not args.autoyes:
for apk in installs:
print(apk.absolute_path)
if not interactive.getpermission('Is that okay?', must_pick=True):
return 1
for apk in installs:
command = f'adb install "{apk.absolute_path}"'
log.info(command)
os.system(command)
return 0
@vlogging.main_decorator
def main(argv):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('apks', nargs='+')
parser.add_argument('--yes', dest='autoyes', action='store_true')
parser.set_defaults(func=adbinstall_argparse)
args = parser.parse_args(argv)
return args.func(args)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))