Skip to content

Commit bb4edb0

Browse files
jonrebmBastian-Krause
authored andcommitted
remote/client: separate ArgumentParser() definition
This is an idiomatic way of setting up argument parsers and allows the parser to be re-used for manpage/documentation generation. Signed-off-by: Jonas Rebmann <jre@pengutronix.de> [bst: rebased] Signed-off-by: Bastian Krause <bst@pengutronix.de>
1 parent 667ec11 commit bb4edb0

File tree

7 files changed

+54
-33
lines changed

7 files changed

+54
-33
lines changed

labgrid/remote/client.py

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1758,25 +1758,7 @@ def __str__(self):
17581758
return self.value
17591759

17601760

1761-
def main():
1762-
import inspect
1763-
1764-
basicConfig(
1765-
level=logging.WARNING,
1766-
stream=sys.stderr,
1767-
)
1768-
1769-
StepLogger.start()
1770-
processwrapper.enable_logging()
1771-
1772-
# Support both legacy variables and properly namespaced ones
1773-
place = os.environ.get("PLACE", None)
1774-
place = os.environ.get("LG_PLACE", place)
1775-
state = os.environ.get("STATE", None)
1776-
state = os.environ.get("LG_STATE", state)
1777-
initial_state = os.environ.get("LG_INITIAL_STATE", None)
1778-
token = os.environ.get("LG_TOKEN", None)
1779-
1761+
def get_parser() -> argparse.ArgumentParser:
17801762
parser = argparse.ArgumentParser()
17811763
parser.add_argument(
17821764
"-x",
@@ -1789,24 +1771,19 @@ def main():
17891771
"-c",
17901772
"--config",
17911773
type=str,
1792-
default=os.environ.get("LG_ENV"),
17931774
help="env config file (default: value from env variable LG_ENV)",
17941775
)
1795-
parser.add_argument(
1796-
"-p", "--place", type=str, default=place, help="place name/alias (default: value from env variable LG_PLACE)"
1797-
)
1776+
parser.add_argument("-p", "--place", type=str, help="place name/alias (default: value from env variable LG_PLACE)")
17981777
parser.add_argument(
17991778
"-s",
18001779
"--state",
18011780
type=str,
1802-
default=state,
18031781
help="strategy state to switch into before command (default: value from env varibale LG_STATE)",
18041782
)
18051783
parser.add_argument(
18061784
"-i",
18071785
"--initial-state",
18081786
type=str,
1809-
default=initial_state,
18101787
help="strategy state to force into before switching to desired state",
18111788
)
18121789
parser.add_argument(
@@ -2120,11 +2097,11 @@ def main():
21202097
subparser.set_defaults(func=ClientSession.create_reservation)
21212098

21222099
subparser = subparsers.add_parser("cancel-reservation", help="cancel a reservation")
2123-
subparser.add_argument("token", type=str, default=token, nargs="?" if token else None)
2100+
subparser.add_argument("token", type=str, nargs="?")
21242101
subparser.set_defaults(func=ClientSession.cancel_reservation)
21252102

21262103
subparser = subparsers.add_parser("wait", help="wait for a reservation to be allocated")
2127-
subparser.add_argument("token", type=str, default=token, nargs="?" if token else None)
2104+
subparser.add_argument("token", type=str, nargs="?")
21282105
subparser.set_defaults(func=ClientSession.wait_reservation)
21292106

21302107
subparser = subparsers.add_parser("reservations", help="list current reservations")
@@ -2147,13 +2124,57 @@ def main():
21472124
subparser = subparsers.add_parser("version", help="show version")
21482125
subparser.set_defaults(func=ClientSession.print_version)
21492126

2127+
return parser
2128+
2129+
2130+
def main():
2131+
import inspect
2132+
2133+
basicConfig(
2134+
level=logging.WARNING,
2135+
stream=sys.stderr,
2136+
)
2137+
2138+
StepLogger.start()
2139+
processwrapper.enable_logging()
2140+
2141+
# Support both legacy variables and properly namespaced ones
2142+
place = os.environ.get("PLACE", None)
2143+
place = os.environ.get("LG_PLACE", place)
2144+
state = os.environ.get("STATE", None)
2145+
state = os.environ.get("LG_STATE", state)
2146+
initial_state = os.environ.get("LG_INITIAL_STATE", None)
2147+
token = os.environ.get("LG_TOKEN", None)
2148+
2149+
parser = get_parser()
2150+
21502151
# make any leftover arguments available for some commands
21512152
args, leftover = parser.parse_known_args()
21522153
if args.command not in ["ssh", "rsync", "forward"]:
21532154
args = parser.parse_args()
21542155
else:
21552156
args.leftover = leftover
21562157

2158+
# handle dynamic defaults
2159+
if args.config is None:
2160+
args.config = os.environ.get("LG_ENV")
2161+
2162+
if args.place is None:
2163+
args.place = place
2164+
2165+
if args.state is None:
2166+
args.state = state
2167+
2168+
if args.initial_state is None:
2169+
args.initial_state = initial_state
2170+
2171+
if args.command in ["cancel-reservation", "wait"] and args.token is None:
2172+
if token:
2173+
args.token = token
2174+
else:
2175+
print("Please provide a token", file=sys.stderr)
2176+
exit(1)
2177+
21572178
if args.verbose:
21582179
logging.getLogger().setLevel(logging.INFO)
21592180
if args.verbose > 1:

man/labgrid-client.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-CLIENT" "1" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-CLIENT" "1" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-client \- labgrid's client interface to control boards
3333
.SH LABGRID-CLIENT INTERFACE TO CONTROL BOARDS

man/labgrid-coordinator.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-COORDINATOR" "1" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-COORDINATOR" "1" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-coordinator \- managing labgrid resources and places
3333
.SH LABGRID-COORDINATOR MANAGING LABGRID RESOURCES AND PLACES

man/labgrid-device-config.5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-DEVICE-CONFIG" "5" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-DEVICE-CONFIG" "5" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-device-config \- test configuration files
3333
.SH LABGRID TEST CONFIGURATION FILES

man/labgrid-exporter.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-EXPORTER" "1" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-EXPORTER" "1" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-exporter \- interface to control boards
3333
.SH LABGRID-EXPORTER INTERFACE TO CONTROL BOARDS

man/labgrid-pytest.7

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-PYTEST" "7" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-PYTEST" "7" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-pytest \- labgrid integration for pytest
3333
.SH LABGRID-PYTEST LABGRID INTEGRATION FOR PYTEST

man/labgrid-suggest.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
2727
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
2828
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
2929
..
30-
.TH "LABGRID-SUGGEST" "1" "Nov 05, 2025" "" "labgrid"
30+
.TH "LABGRID-SUGGEST" "1" "2025" "" "labgrid"
3131
.SH NAME
3232
labgrid-suggest \- generator for YAML config files
3333
.SH LABGRID-SUGGEST GENERATOR FOR YAML CONFIG FILES

0 commit comments

Comments
 (0)