X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=make-secnet-sites;fp=make-secnet-sites;h=46a887c8b73c049da7548f43e8d24f2a12ab21d9;hb=3cf8b67a5ec9157915fe823f173c07cbd897495f;hp=9e4538b01e4f719ea3ece7ad6d1396dd53edd106;hpb=59053a60ee9c49a6123022120321bfc451458d85;p=secnet.git diff --git a/make-secnet-sites b/make-secnet-sites index 9e4538b..46a887c 100755 --- a/make-secnet-sites +++ b/make-secnet-sites @@ -290,7 +290,19 @@ class PkmElide(PkmBase): def site_finish(self,confw): confw.write("peer-keys \"%s\";\n"%self._pa); +class OpBase(): + pass + +class OpConf(OpBase): + def is_service(self): return 0 + +class OpUserv(OpBase): + opts = ['--userv','-u'] + help = 'userv service fragment update mode' + def is_service(self): return 1 + def parse_args(): + global opmode global service global inputfile global header @@ -308,8 +320,12 @@ def parse_args(): global pubkeys_mode ap = argparse.ArgumentParser(description='process secnet sites files') - ap.add_argument('--userv', '-u', action='store_true', - help='userv service fragment update mode') + def add_opmode(how): + ap.add_argument(*how().opts, action=ArgActionLambda, + nargs=0, + fn=(lambda v,ns,*x: setattr(ns,'opmode',how)), + help=how().help) + add_opmode(OpUserv) ap.add_argument('--conf-key-prefix', action=ActionNoYes, default=True, help='prefix conf file key names derived from sites data') @@ -334,7 +350,8 @@ def parse_args(): av = ap.parse_args() debug_level = av.debug debugrepr('av',av) - service = 1 if av.userv else 0 + opmode = getattr(av,'opmode',OpConf)() + service = opmode.is_service() prefix = '' if av.prefix is None else av.prefix[0] key_prefix = av.conf_key_prefix output_version = av.output_version[0]