]>
glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/helpers/arguments.py
1 # Copyright 2021 Oliver Smith
2 # SPDX-License-Identifier: GPL-3.0-or-later
12 """ This file is about parsing command line arguments passed to waydroid, as
13 well as generating the help pages (waydroid -h). All this is done with
14 Python's argparse. The parsed arguments get extended and finally stored in
15 the "args" variable, which is prominently passed to most functions all
16 over the waydroid code base.
18 See tools/helpers/args.py for more information about the args variable. """
20 def arguments_init(subparser
):
21 ret
= subparser
.add_parser("init", help="set up waydroid specific"
22 " configs and install images")
23 ret
.add_argument("-i", "--images_path",
24 help="custom path to waeiod images (default in"
25 " /home/.waydroid/images)")
26 ret
.add_argument("-f", "--force", action
="store_true",
27 help="re-initialize configs and images")
28 ret
.add_argument("-c", "--system_channel",
29 help="custom system channel (options: OTA channel URL; default is Official OTA server)")
30 ret
.add_argument("-v", "--vendor_channel",
31 help="custom vendor channel (options: OTA channel URL; default is Official OTA server)")
32 ret
.add_argument("-r", "--rom_type",
33 help="rom type (options: \"lineage\", \"bliss\" or OTA channel URL; default is LineageOS)")
34 ret
.add_argument("-s", "--system_type",
35 help="system type (options: VANILLA, FOSS or GAPPS; default is VANILLA)")
38 def arguments_status(subparser
):
39 ret
= subparser
.add_parser("status",
40 help="quick check for the waydroid")
43 def arguments_upgrade(subparser
):
44 ret
= subparser
.add_parser("upgrade", help="upgrade images")
45 ret
.add_argument("-o", "--offline", action
="store_true",
46 help="just for updating configs")
49 def arguments_log(subparser
):
50 ret
= subparser
.add_parser("log", help="follow the waydroid logfile")
51 ret
.add_argument("-n", "--lines", default
="60",
52 help="count of initial output lines")
53 ret
.add_argument("-c", "--clear", help="clear the log",
54 action
="store_true", dest
="clear_log")
57 def arguments_session(subparser
):
58 ret
= subparser
.add_parser("session", help="session controller")
59 sub
= ret
.add_subparsers(title
="subaction", dest
="subaction")
60 sub
.add_parser("start", help="start session")
61 sub
.add_parser("stop", help="start session")
64 def arguments_container(subparser
):
65 ret
= subparser
.add_parser("container", help="container controller")
66 sub
= ret
.add_subparsers(title
="subaction", dest
="subaction")
67 sub
.add_parser("start", help="start container")
68 sub
.add_parser("stop", help="start container")
69 sub
.add_parser("restart", help="restart container")
70 sub
.add_parser("freeze", help="freeze container")
71 sub
.add_parser("unfreeze", help="unfreeze container")
74 def arguments_app(subparser
):
75 ret
= subparser
.add_parser("app", help="applications controller")
76 sub
= ret
.add_subparsers(title
="subaction", dest
="subaction")
77 install
= sub
.add_parser(
78 "install", help="push a single package to the container and install it")
79 install
.add_argument('PACKAGE', help="path to apk file")
80 remove
= sub
.add_parser(
81 "remove", help="remove single app package from the container")
82 remove
.add_argument('PACKAGE', help="package name of app to remove")
83 launch
= sub
.add_parser("launch", help="start single application")
84 launch
.add_argument('PACKAGE', help="package name of app to launch")
85 sub
.add_parser("list", help="list installed applications")
88 def arguments_prop(subparser
):
89 ret
= subparser
.add_parser("prop", help="android properties controller")
90 sub
= ret
.add_subparsers(title
="subaction", dest
="subaction")
92 "get", help="get value of property from container")
93 get
.add_argument('key', help="key of the property to get")
95 "set", help="set value to property on container")
96 set.add_argument('key', help="key of the property to set")
97 set.add_argument('value', help="value of the property to set")
100 def arguments_fullUI(subparser
):
101 ret
= subparser
.add_parser("show-full-ui", help="show android full screen in window")
104 def arguments_shell(subparser
):
105 ret
= subparser
.add_parser("shell", help="run remote shell command")
106 ret
.add_argument('COMMAND', nargs
='?', help="command to run")
109 def arguments_logcat(subparser
):
110 ret
= subparser
.add_parser("logcat", help="show android logcat")
114 parser
= argparse
.ArgumentParser(prog
="waydroid")
117 parser
.add_argument("-V", "--version", action
="version",
118 version
=tools
.config
.version
)
121 parser
.add_argument("-l", "--log", dest
="log", default
=None,
122 help="path to log file")
123 parser
.add_argument("--details-to-stdout", dest
="details_to_stdout",
124 help="print details (e.g. build output) to stdout,"
125 " instead of writing to the log",
127 parser
.add_argument("-v", "--verbose", dest
="verbose",
128 action
="store_true", help="write even more to the"
129 " logfiles (this may reduce performance)")
130 parser
.add_argument("-q", "--quiet", dest
="quiet", action
="store_true",
131 help="do not output any log messages")
134 sub
= parser
.add_subparsers(title
="action", dest
="action")
136 arguments_status(sub
)
139 arguments_upgrade(sub
)
140 arguments_session(sub
)
141 arguments_container(sub
)
144 arguments_fullUI(sub
)
146 arguments_logcat(sub
)
149 argcomplete
.autocomplete(parser
, always_complete_options
="long")
151 # Parse and extend arguments (also backup unmodified result from argparse)
152 args
= parser
.parse_args()