@@ -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,19 @@ 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
- 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)" )
1743
1723
parser .add_argument (
1744
1724
"-s" ,
1745
1725
"--state" ,
1746
1726
type = str ,
1747
- default = state ,
1748
1727
help = "strategy state to switch into before command (default: value from env varibale LG_STATE)" ,
1749
1728
)
1750
1729
parser .add_argument (
1751
1730
"-i" ,
1752
1731
"--initial-state" ,
1753
1732
type = str ,
1754
- default = initial_state ,
1755
1733
help = "strategy state to force into before switching to desired state" ,
1756
1734
)
1757
1735
parser .add_argument (
@@ -2065,11 +2043,11 @@ def main():
2065
2043
subparser .set_defaults (func = ClientSession .create_reservation )
2066
2044
2067
2045
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 = "?" )
2069
2047
subparser .set_defaults (func = ClientSession .cancel_reservation )
2070
2048
2071
2049
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 = "?" )
2073
2051
subparser .set_defaults (func = ClientSession .wait_reservation )
2074
2052
2075
2053
subparser = subparsers .add_parser ("reservations" , help = "list current reservations" )
@@ -2092,13 +2070,55 @@ def main():
2092
2070
subparser = subparsers .add_parser ("version" , help = "show version" )
2093
2071
subparser .set_defaults (func = ClientSession .print_version )
2094
2072
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
+
2095
2095
# make any leftover arguments available for some commands
2096
2096
args , leftover = parser .parse_known_args ()
2097
2097
if args .command not in ["ssh" , "rsync" , "forward" ]:
2098
2098
args = parser .parse_args ()
2099
2099
else :
2100
2100
args .leftover = leftover
2101
2101
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
+
2102
2122
if args .verbose :
2103
2123
logging .getLogger ().setLevel (logging .INFO )
2104
2124
if args .verbose > 1 :
0 commit comments