@@ -1704,24 +1704,7 @@ class ExportFormat(enum.Enum):
17041704 def __str__ (self ):
17051705 return self .value
17061706
1707-
1708- def main ():
1709- basicConfig (
1710- level = logging .WARNING ,
1711- stream = sys .stderr ,
1712- )
1713-
1714- StepLogger .start ()
1715- processwrapper .enable_logging ()
1716-
1717- # Support both legacy variables and properly namespaced ones
1718- place = os .environ .get ("PLACE" , None )
1719- place = os .environ .get ("LG_PLACE" , place )
1720- state = os .environ .get ("STATE" , None )
1721- state = os .environ .get ("LG_STATE" , state )
1722- initial_state = os .environ .get ("LG_INITIAL_STATE" , None )
1723- token = os .environ .get ("LG_TOKEN" , None )
1724-
1707+ def get_parser () -> argparse .ArgumentParser :
17251708 parser = argparse .ArgumentParser ()
17261709 parser .add_argument (
17271710 "-x" ,
@@ -1734,24 +1717,19 @@ def main():
17341717 "-c" ,
17351718 "--config" ,
17361719 type = str ,
1737- default = os .environ .get ("LG_ENV" ),
17381720 help = "env config file (default: value from env variable LG_ENV)" ,
17391721 )
1740- parser .add_argument (
1741- "-p" , "--place" , type = str , default = place , help = "place name/alias (default: value from env variable LG_PLACE)"
1742- )
1722+ parser .add_argument ("-p" , "--place" , type = str , help = "place name/alias (default: value from env variable LG_PLACE)" )
17431723 parser .add_argument (
17441724 "-s" ,
17451725 "--state" ,
17461726 type = str ,
1747- default = state ,
17481727 help = "strategy state to switch into before command (default: value from env varibale LG_STATE)" ,
17491728 )
17501729 parser .add_argument (
17511730 "-i" ,
17521731 "--initial-state" ,
17531732 type = str ,
1754- default = initial_state ,
17551733 help = "strategy state to force into before switching to desired state" ,
17561734 )
17571735 parser .add_argument (
@@ -2065,11 +2043,11 @@ def main():
20652043 subparser .set_defaults (func = ClientSession .create_reservation )
20662044
20672045 subparser = subparsers .add_parser ("cancel-reservation" , help = "cancel a reservation" )
2068- subparser .add_argument ("token" , type = str , default = token , nargs = "?" if token else None )
2046+ subparser .add_argument ("token" , type = str , nargs = "?" )
20692047 subparser .set_defaults (func = ClientSession .cancel_reservation )
20702048
20712049 subparser = subparsers .add_parser ("wait" , help = "wait for a reservation to be allocated" )
2072- subparser .add_argument ("token" , type = str , default = token , nargs = "?" if token else None )
2050+ subparser .add_argument ("token" , type = str , nargs = "?" )
20732051 subparser .set_defaults (func = ClientSession .wait_reservation )
20742052
20752053 subparser = subparsers .add_parser ("reservations" , help = "list current reservations" )
@@ -2092,13 +2070,55 @@ def main():
20922070 subparser = subparsers .add_parser ("version" , help = "show version" )
20932071 subparser .set_defaults (func = ClientSession .print_version )
20942072
2073+ return parser
2074+
2075+
2076+ def main ():
2077+ basicConfig (
2078+ level = logging .WARNING ,
2079+ stream = sys .stderr ,
2080+ )
2081+
2082+ StepLogger .start ()
2083+ processwrapper .enable_logging ()
2084+
2085+ # Support both legacy variables and properly namespaced ones
2086+ place = os .environ .get ("PLACE" , None )
2087+ place = os .environ .get ("LG_PLACE" , place )
2088+ state = os .environ .get ("STATE" , None )
2089+ state = os .environ .get ("LG_STATE" , state )
2090+ initial_state = os .environ .get ("LG_INITIAL_STATE" , None )
2091+ token = os .environ .get ("LG_TOKEN" , None )
2092+
2093+ parser = get_parser ()
2094+
20952095 # make any leftover arguments available for some commands
20962096 args , leftover = parser .parse_known_args ()
20972097 if args .command not in ["ssh" , "rsync" , "forward" ]:
20982098 args = parser .parse_args ()
20992099 else :
21002100 args .leftover = leftover
21012101
2102+ # handle dynamic defaults
2103+ if args .config is None :
2104+ args .config = os .environ .get ("LG_ENV" )
2105+
2106+ if args .place is None :
2107+ args .place = place
2108+
2109+ if args .state is None :
2110+ args .state = state
2111+
2112+ if args .initial_state is None :
2113+ args .initial_state = initial_state
2114+
2115+ if args .command in ["cancel-reservation" , "wait" ] and args .token is None :
2116+ if token :
2117+ args .token = token
2118+ else :
2119+ print ("Please provide a token" , file = sys .stderr )
2120+ exit (1 )
2121+
21022122 if args .verbose :
21032123 logging .getLogger ().setLevel (logging .INFO )
21042124 if args .verbose > 1 :
0 commit comments