iro/config.py
branchdevel
changeset 220 602720314930
parent 188 4d6130d91e56
child 224 072de50834f9
equal deleted inserted replaced
219:4e9d79c35088 220:602720314930
    10         ConfigParser.__init__(self)
    10         ConfigParser.__init__(self)
    11         self.reloadList=[]
    11         self.reloadList=[]
    12 
    12 
    13     def read(self,files):
    13     def read(self,files):
    14         from offer import getProvider
    14         from offer import getProvider
    15         ConfigParser.read(self, files)
    15         r = ConfigParser.read(self, files)
    16         for s in self.sections():
    16         for s in self.sections():
    17             if s == "main":
    17             if s == "main":
    18                 main.validate(self.items(s))
    18                 main.validate(self.items(s))
    19             else:
    19             else:
    20                 getProvider("tmp", self.get(s,'typ'), self.items(s))
    20                 getProvider("tmp", self.get(s,'typ'), self.items(s))
       
    21         return r
    21 
    22 
    22     def reload_(self):
    23     def reload_(self):
    23         for f in self.reloadList:
    24         for f in self.reloadList:
    24             f()
    25             f()
    25 
    26 
    32         self.long=long
    33         self.long=long
    33         self.help = help
    34         self.help = help
    34         self.must = must
    35         self.must = must
    35         self.default = default
    36         self.default = default
    36 
    37 
    37 class Config():
    38 class Config:
    38     def __init__(self, name):
    39     def __init__(self, name):
    39         self.name = name
    40         self.name = name
    40         self.options={
    41         self.options={
    41             "port":Option(partial(vInteger,minv=0),long="Port under that twisted is running",must=True),
    42             "port":Option(partial(vInteger,minv=0),long="Port under that twisted is running",must=True),
    42             "dburl":Option(lambda x,y:x,long="Connection URL to database",must=True),
    43             "dburl":Option(lambda x,y:x,long="Connection URL to database",must=True),
    43         }
    44         }
       
    45         self.order = ["dburl","port"]
    44         self._init=True
    46         self._init=True
    45 
    47 
    46 
    48 
    47     def _read(self, cfg, write=False):
    49     def _read(self, cfg, write=False):
    48         c = dict(cfg)
    50         c = dict(cfg)
    70             if getattr(self,o) != getattr(other,o):
    72             if getattr(self,o) != getattr(other,o):
    71                 return False
    73                 return False
    72         else:
    74         else:
    73             return True
    75             return True
    74 
    76 
       
    77     def sampleConf(self):
       
    78         ret=[]
       
    79         for o in self.order:
       
    80             opt=self.options[o]
       
    81             if opt.long:
       
    82                 ret.append("# "+opt.long)
       
    83             if opt.must:
       
    84                 s= "%s = "%o
       
    85                 if opt.default is not None:
       
    86                     s += str(opt.default)
       
    87                 ret.append(s)
       
    88             else:
       
    89                 ret.append("# %s = %s"%(o,opt.default))
       
    90             ret.append("")
       
    91 
       
    92         return ["[%s]"%self.name,]+ret
       
    93 
    75 def readConfig():
    94 def readConfig():
    76     configParser.read(confFiles)
    95     configParser.read(confFiles)
    77     configParser.reload()
    96     configParser.reload()
    78     if main._init:
    97     if main._init:
    79         main.load(configParser.items("main"))
    98         main.load(configParser.items("main"))