Mercurial > p > roundup > code
annotate roundup/config.py @ 482:fdee2ff82b40 config-0-4-0-branch
Miscellaneous improvements
* Altered function names in roundup.config to bE NeAtEr rather_than_ugly;
* Created some extra roundup.config exceptions to let people know what's
going on;
* Modified instance_config.py to use those exceptions, so that syntax errors
or other exceptions did *not* trigger the same behavior as import
while in the templates/ directory.
* Modified roundup.cgi to use the same neater function names, plus did some
minor cleanup.
| author | Titus Brown <titus@users.sourceforge.net> |
|---|---|
| date | Thu, 03 Jan 2002 08:28:17 +0000 |
| parents | a261b0bbba43 |
| children | 13719594278b |
| rev | line source |
|---|---|
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
1 import sys |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
2 import os |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
3 import ConfigParser |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
4 import string |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
5 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
6 class Error(Exception): |
|
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
7 pass |
|
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
8 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
9 class UnknownInstanceLocation(Error): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
10 pass |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
11 |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
12 class NoInstanceConfigFile(Error): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
13 pass |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
14 |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
15 def debug_mode(): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
16 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
17 Returns the basic debug mode/level. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
18 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
19 return os.environ.get('ROUNDUP_DEBUG', 0) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
21 def loadBaseConfig(): |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
22 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
23 Loads the base configuration for Roundup. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
24 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
25 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
26 c = ConfigParser.ConfigParser() |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
27 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
28 ## |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
29 ## CTB: this is where to search for all overrides, including |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
30 ## system-specific files, registry settings, etc. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
31 ## |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
32 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
33 # For the moment, search for the config file in |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
34 # |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
35 # %(sys.prefix)s/share/roundup/roundup.rc, |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
36 # |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
37 # with ROUNDUP_CONF overriding it. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
38 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
39 filenames_to_check = [] # list of files to check: |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
40 if os.environ.has_key('ROUNDUP_CONF'): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
41 filenames_to_check.append(os.environ['ROUNDUP_CONF']) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
43 filenames_to_check.append('%s/share/roundup/roundup.rc'%(sys.prefix,)) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
44 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
45 for filename in filenames_to_check: |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
46 if os.path.exists(filename): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
47 c.read(filename) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
48 break |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
49 else: |
|
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
50 raise Error("could not find configuration file") |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
51 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
52 if debug_mode(): |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
53 print 'Loaded configuration from "%s".'%(filename,) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
54 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
55 # we also want to give a base path for other config file names; |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
56 # for the moment, make it the base path of the filename we chose. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
57 base_path = os.path.dirname(filename) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
59 return BaseConfig(c, base_path) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
61 class BaseConfig: |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
62 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
63 A container for the installation-wide roundup configuration. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
64 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
65 def __init__(self, c, base_path): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
66 assert isinstance(c, ConfigParser.ConfigParser) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
67 self.conf = c |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
68 self.base_path = base_path |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
69 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
70 def get(self, group, attr): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
71 return self.conf.get(group, attr) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
72 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
73 def loadInstances(self): |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
74 filename = string.strip(self.conf.get('base', 'instances')) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
75 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
76 # if it looks like an absolute path, leave it alone; otherwise, |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
77 # add on the base path. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
78 if filename[0] == '/' or filename[0] == '\\': |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
79 pass |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
80 else: |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
81 filename = os.path.normpath(self.base_path + '/' + filename) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
82 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
83 defaults_dictionary = { 'roundup_conf_dir' : self.base_path } |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
84 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
85 c = ConfigParser.ConfigParser(defaults_dictionary) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
86 c.read(filename) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
87 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
88 return InstancesConfig(c, filename) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
90 class InstancesConfig: |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
91 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
92 A container for the installation-wide list of instances. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
93 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
94 def __init__(self, c, filename=""): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
95 assert isinstance(c, ConfigParser.ConfigParser) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
96 self.conf = c |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
97 self.filename = filename |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
98 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
99 instance_names = {} |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
100 instance_dirs = {} |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
101 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
102 for name in c.sections(): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
103 dir = c.get(name, 'homedir') |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
104 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
105 if instance_names.has_key(dir) or instance_dirs.has_key(name): |
|
481
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
106 error_text = 'ERROR: dir/name correspondence is not unique (%s)'%(self.filename,) |
|
a261b0bbba43
Fixed a number of minor syntax issues & error handling.
Titus Brown <titus@users.sourceforge.net>
parents:
480
diff
changeset
|
107 raise ValueError(error_text) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
108 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
109 instance_dirs[name] = dir |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
110 instance_names[dir] = name |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
111 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
112 self.instance_dirs = instance_dirs |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
113 self.instance_names = instance_names |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
114 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
115 def getNames(self): |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
116 return self.instance_dirs.keys() |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
117 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
118 def getNameFromDir(self, dir): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
119 if self.instance_names.has_key(dir): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
120 return self.instance_names[dir] |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
121 else: |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
122 raise UnknownInstanceLocation(dir) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
123 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
124 def getDirFromName(self, name): |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
125 return self.instance_dirs[name] |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
126 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
127 def loadConfig(self, name): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
128 instance_dir = self.getDirFromName(name) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
130 defaults_file = self.conf.get(name, 'defaults') |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
131 if not os.path.exists(defaults_file): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
132 raise NoInstanceConfigFile("defaults file %s does not exist"%(defaults_file,)) |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
133 |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
134 config_file = self.conf.get(name, 'config') |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
135 if not os.path.exists(config_file): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
136 raise NoInstanceConfigFile("%s does not exist"%(config_file,)) |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
137 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
138 defaults_dictionary = { 'homedir' : instance_dir, |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
139 'instance_name' : name, |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
140 } |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
141 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
142 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
143 c = ConfigParser.ConfigParser(defaults_dictionary) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
144 c.read(defaults_file) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
145 c.read(config_file) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
146 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
147 return InstanceConfig(c, name, instance_dir) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
148 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
149 class InstanceConfig: |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
150 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
151 A container for each per-instance configuration. |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
152 """ |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
153 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
154 def __init__(self, c, instanceName, instanceDirectory): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
155 assert isinstance(c, ConfigParser.ConfigParser) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
156 self.conf = c |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
157 self.name = instanceName |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
158 self.directory = instanceDirectory |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
160 def get_name(self): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
161 return self.name |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
162 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
163 def get_directory(self): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
164 return self.directory |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
165 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
166 def get(self, group, attr): |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
167 return self.conf.get(group, attr) |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
168 |
|
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
169 if __name__ == '__main__': |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
170 base_config = loadBaseConfig() |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
171 instances = base_config.loadInstances() |
|
480
a5cd27d33516
Initial ConfigParser implementation.
Titus Brown <titus@users.sourceforge.net>
parents:
diff
changeset
|
172 |
|
482
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
173 for k in instances.getNames(): |
|
fdee2ff82b40
Miscellaneous improvements
Titus Brown <titus@users.sourceforge.net>
parents:
481
diff
changeset
|
174 print "%s:%s"%(k, instances.getDirFromName(k),) |
