@@ -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 :
0 commit comments