From a1645be43c2f8fc9f167bb9a9cc1259158d68ce6 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 1 Dec 2019 15:55:48 +0000 Subject: [PATCH] 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 --- make-secnet-sites | 7 +++++++ 1 file changed, 7 insertions(+) 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 -- 2.30.2