chiark / gitweb /
make-secnet-sites: OpConf: Move positional_args to OpBase
[secnet.git] / make-secnet-sites
index 522105103ffe3a1136a31cd14c7a5600b8c13cdc..751479dd23da243eba4390789eb4c732adeb452d 100755 (executable)
@@ -293,32 +293,34 @@ class PkmElide(PkmBase):
 class OpBase():
        # Base case is reading a sites file from self.inputfilee.
        # And writing a sites file to self.sitesfile.
+       def positional_args(self, av):
+               if len(av.arg)>3:
+                       print("Too many arguments")
+                       sys.exit(1)
+               (self.inputfile, self.outputfile) = (av.arg + [None]*2)[0:2]
        def read_in(self):
                if self.inputfile is None:
                        self.inputlines = pfile("stdin",sys.stdin.readlines())
                else:
                        self.inputlines = pfilepath(self.inputfile)
        def write_out(self):
-               f=open(self.sitesfile+"-tmp",'w')
+               if self.outputfile is None:
+                       f=sys.stdout
+               else:
+                       f=open(self.outputfile+"-tmp",'w')
                f.write("# sites file autogenerated by make-secnet-sites\n")
-               f.write("# generated %s, invoked by %s\n"%
-                       (time.asctime(time.localtime(time.time())),
-                        self.user))
+               self.write_out_heading(f)
                f.write("# use make-secnet-sites to turn this file into a\n")
                f.write("# valid /etc/secnet/sites.conf file\n\n")
                self.write_out_contents(f)
                f.write("# end of sites file\n")
-               f.close()
-               os.rename(self.sitesfile+"-tmp",self.sitesfile)
+               if self.outputfile is not None:
+                       f.close()
+                       os.rename(self.outputfile+"-tmp",self.outputfile)
 
 class OpConf(OpBase):
        opts = ['--conf']
        help = 'sites.conf generation mode (default)'
-       def positional_args(self, av):
-               if len(av.arg)>3:
-                       print("Too many arguments")
-                       sys.exit(1)
-               (self.inputfile, self.outputfile) = (av.arg + [None]*2)[0:2]
        def check_group(self,group,w): pass
        def write_out(self):
                if self.outputfile is None:
@@ -338,7 +340,7 @@ class OpUserv(OpBase):
                        print("Wrong number of arguments")
                        sys.exit(1)
                (self.header, self.groupfiledir,
-                self.sitesfile, self.group) = av.arg
+                self.outputfile, self.group) = av.arg
                self.group = Tainted(self.group,0,'command line')
                # untrusted argument from caller
                if "USERV_USER" not in os.environ:
@@ -377,6 +379,10 @@ class OpUserv(OpBase):
                os.rename(self.groupfiledir+"/T"+self.group.groupname(),
                          self.groupfiledir+"/R"+self.group.groupname())
                OpBase.write_out(self)
+       def write_out_heading(self,f):
+               f.write("# generated %s, invoked by %s\n"%
+                       (time.asctime(time.localtime(time.time())),
+                        self.user))
        def write_out_contents(self,f):
                for i in self.headerinput: f.write(i)
                files=os.listdir(self.groupfiledir)