@@ -1704,24 +1704,7 @@ class ExportFormat(enum.Enum):
1704
1704
def __str__ (self ):
1705
1705
return self .value
1706
1706
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 :
1725
1708
parser = argparse .ArgumentParser ()
1726
1709
parser .add_argument (
1727
1710
"-x" ,
@@ -1734,24 +1717,21 @@ def main():
1734
1717
"-c" ,
1735
1718
"--config" ,
1736
1719
type = str ,
1737
- default = os .environ .get ("LG_ENV" ),
1738
1720
help = "env config file (default: value from env variable LG_ENV)" ,
1739
1721
)
1740
1722
parser .add_argument (
1741
- "-p" , "--place" , type = str , default = place , help = "place name/alias (default: value from env variable LG_PLACE)"
1723
+ "-p" , "--place" , type = str , help = "place name/alias (default: value from env variable LG_PLACE)"
1742
1724
)
1743
1725
parser .add_argument (
1744
1726
"-s" ,
1745
1727
"--state" ,
1746
1728
type = str ,
1747
- default = state ,
1748
1729
help = "strategy state to switch into before command (default: value from env varibale LG_STATE)" ,
1749
1730
)
1750
1731
parser .add_argument (
1751
1732
"-i" ,
1752
1733
"--initial-state" ,
1753
1734
type = str ,
1754
- default = initial_state ,
1755
1735
help = "strategy state to force into before switching to desired state" ,
1756
1736
)
1757
1737
parser .add_argument (
@@ -2065,11 +2045,11 @@ def main():
2065
2045
subparser .set_defaults (func = ClientSession .create_reservation )
2066
2046
2067
2047
subparser = subparsers .add_parser ("cancel-reservation" , help = "cancel a reservation" )
2068
- subparser .add_argument ("token" , type = str , default = token , nargs = "?" if token else None )
2048
+ subparser .add_argument ("token" , type = str , nargs = "?" )
2069
2049
subparser .set_defaults (func = ClientSession .cancel_reservation )
2070
2050
2071
2051
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 )
2052
+ subparser .add_argument ("token" , type = str , nargs = "?" )
2073
2053
subparser .set_defaults (func = ClientSession .wait_reservation )
2074
2054
2075
2055
subparser = subparsers .add_parser ("reservations" , help = "list current reservations" )
@@ -2092,13 +2072,54 @@ def main():
2092
2072
subparser = subparsers .add_parser ("version" , help = "show version" )
2093
2073
subparser .set_defaults (func = ClientSession .print_version )
2094
2074
2075
+ return parser
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