chiark / gitweb /
make-secnet-sites: Provide --filter mode
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 Dec 2019 16:56:31 +0000 (16:56 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Feb 2020 21:56:53 +0000 (21:56 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
README.make-secnet-sites
make-secnet-sites

index 21d7291..cbf304e 100644 (file)
@@ -1,6 +1,7 @@
 USAGE
 
        make-secnet-sites [-P PREFIX] [--conf] [IN [OUTCONF]]
+       make-secnet-sites --filter [IN [OUT]]
        make-secnet-sites -u|--userv HEADER GRPDIR SITESFILE GROUP
 
        The `-P' option sets the PREFIX string, mentioned below in
@@ -10,6 +11,11 @@ USAGE
        file from IN (defaulting to standard input), and writes a Secnet
        configuration fragment to OUTCONF (defaulting to standard output).
 
+       In --filter mode, `make-secnet-sites' reads a single input
+       file from IN (defaulting to standard input), and writes a
+       version of that sites file to OUT (defaulting to standard
+       output).  The output is filtered according to --output-version.
+
        In --userv mode, `make-secnet-sites' expects to have been invoked
        via GNU Userv.  It verifies that GROUP is listed in the
        `USERV_GROUP' environment variable.  It then processes the
index 751479d..a84479c 100755 (executable)
@@ -332,6 +332,19 @@ class OpConf(OpBase):
                if self.outputfile is not None:
                        os.rename(tmp_outputfile,self.outputfile)
 
+class OpFilter(OpBase):
+       opts = ['--filter']
+       help = 'sites file filtering mode'
+       def positional_arXgs(self, av):
+               if len(av.arg)!=1:
+                       print("Too many arguments")
+               (self.inputfile,) = (av.arg + [None])[0:1]
+               self.outputfile = None
+       def write_out_heading(self,f):
+               f.write("# --filter --output-version=%d\n"%output_version)
+       def write_out_contents(self,f):
+               for i in self.inputlines: f.write(i)
+
 class OpUserv(OpBase):
        opts = ['--userv','-u']
        help = 'userv service fragment update mode'
@@ -408,6 +421,7 @@ def parse_args():
                        fn=(lambda v,ns,*x: setattr(ns,'opmode',how)),
                        help=how().help)
        add_opmode(OpConf)
+       add_opmode(OpFilter)
        add_opmode(OpUserv)
        ap.add_argument('--conf-key-prefix', action=ActionNoYes,
                        default=True,