From: Ian Jackson Date: Sun, 1 Dec 2019 15:55:48 +0000 (+0000) Subject: make-secnet-sites: Provide ArgActionLambda X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=7d24465c2807434cb63a9c54897f5a66dbd55d67;p=secnet.git make-secnet-sites: Provide ArgActionLambda optparse has a helpful lambda facility, so you can pass a lambda directly to add_argument. But optparse is deprecated so we are using argparse, in which this facility was unaccountably removed. Instead you have to subclass argparse.Action. The resulting ArgActionLambda will still be a bit awkward to use but a lot better than lifting what ought to be each lambda body into its own subclass. Signed-off-by: Ian Jackson --- diff --git a/make-secnet-sites b/make-secnet-sites index 21ff460..6445947 100755 --- a/make-secnet-sites +++ b/make-secnet-sites @@ -232,6 +232,13 @@ class Tainted: ok=self._re_ok(Tainted.bad_base91,what,4096) return self._rtn(ok) +class ArgActionLambda(argparse.Action): + def __init__(self, fn, **kwargs): + self.fn=fn + argparse.Action.__init__(self,**kwargs) + def __call__(self,ap,ns,values,option_string): + self.fn(values,ns,ap,option_string) + def parse_args(): global service global inputfile