@@ -1705,23 +1705,7 @@ def __str__(self):
1705
1705
return self .value
1706
1706
1707
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
-
1708
+ def get_parser () -> argparse .ArgumentParser :
1725
1709
parser = argparse .ArgumentParser ()
1726
1710
parser .add_argument (
1727
1711
"-x" ,
@@ -1734,24 +1718,19 @@ def main():
1734
1718
"-c" ,
1735
1719
"--config" ,
1736
1720
type = str ,
1737
- default = os .environ .get ("LG_ENV" ),
1738
1721
help = "env config file (default: value from env variable LG_ENV)" ,
1739
1722
)
1740
- parser .add_argument (
1741
- "-p" , "--place" , type = str , default = place , help = "place name/alias (default: value from env variable LG_PLACE)"
1742
- )
1723
+ parser .add_argument ("-p" , "--place" , type = str , help = "place name/alias (default: value from env variable LG_PLACE)" )
1743
1724
parser .add_argument (
1744
1725
"-s" ,
1745
1726
"--state" ,
1746
1727
type = str ,
1747
- default = state ,
1748
1728
help = "strategy state to switch into before command (default: value from env varibale LG_STATE)" ,
1749
1729
)
1750
1730
parser .add_argument (
1751
1731
"-i" ,
1752
1732
"--initial-state" ,
1753
1733
type = str ,
1754
- default = initial_state ,
1755
1734
help = "strategy state to force into before switching to desired state" ,
1756
1735
)
1757
1736
parser .add_argument (
@@ -2065,11 +2044,11 @@ def main():
2065
2044
subparser .set_defaults (func = ClientSession .create_reservation )
2066
2045
2067
2046
subparser = subparsers .add_parser ("cancel-reservation" , help = "cancel a reservation" )
2068
- subparser .add_argument ("token" , type = str , default = token , nargs = "?" if token else None )
2047
+ subparser .add_argument ("token" , type = str , nargs = "?" )
2069
2048
subparser .set_defaults (func = ClientSession .cancel_reservation )
2070
2049
2071
2050
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 )
2051
+ subparser .add_argument ("token" , type = str , nargs = "?" )
2073
2052
subparser .set_defaults (func = ClientSession .wait_reservation )
2074
2053
2075
2054
subparser = subparsers .add_parser ("reservations" , help = "list current reservations" )
@@ -2092,13 +2071,55 @@ def main():
2092
2071
subparser = subparsers .add_parser ("version" , help = "show version" )
2093
2072
subparser .set_defaults (func = ClientSession .print_version )
2094
2073
2074
+ return parser
2075
+
2076
+
2077
+ def main ():
2078
+ basicConfig (
2079
+ level = logging .WARNING ,
2080
+ stream = sys .stderr ,
2081
+ )
2082
+
2083
+ StepLogger .start ()
2084
+ processwrapper .enable_logging ()
2085
+
2086
+ # Support both legacy variables and properly namespaced ones
2087
+ place = os .environ .get ("PLACE" , None )
2088
+ place = os .environ .get ("LG_PLACE" , place )
2089
+ state = os .environ .get ("STATE" , None )
2090
+ state = os .environ .get ("LG_STATE" , state )
2091
+ initial_state = os .environ .get ("LG_INITIAL_STATE" , None )
2092
+ token = os .environ .get ("LG_TOKEN" , None )
2093
+
2094
+ parser = get_parser ()
2095
+
2095
2096
# make any leftover arguments available for some commands
2096
2097
args , leftover = parser .parse_known_args ()
2097
2098
if args .command not in ["ssh" , "rsync" , "forward" ]:
2098
2099
args = parser .parse_args ()
2099
2100
else :
2100
2101
args .leftover = leftover
2101
2102
2103
+ # handle dynamic defaults
2104
+ if args .config is None :
2105
+ args .config = os .environ .get ("LG_ENV" )
2106
+
2107
+ if args .place is None :
2108
+ args .place = place
2109
+
2110
+ if args .state is None :
2111
+ args .state = state
2112
+
2113
+ if args .initial_state is None :
2114
+ args .initial_state = initial_state
2115
+
2116
+ if args .command in ["cancel-reservation" , "wait" ] and args .token is None :
2117
+ if token :
2118
+ args .token = token
2119
+ else :
2120
+ print ("Please provide a token" , file = sys .stderr )
2121
+ exit (1 )
2122
+
2102
2123
if args .verbose :
2103
2124
logging .getLogger ().setLevel (logging .INFO )
2104
2125
if args .verbose > 1 :
0 commit comments