# HG changeset patch # User John Schneiderman # Date 1428426430 -7200 # Node ID e082759a26b8dc76d66a55d8dae941522d0d49f8 # Parent a1b9dc5efa75d1f5b2db5a92551d076b72d3d353 Configuration file now split into logical sections. New data path in the configuration file. diff -r a1b9dc5efa75 -r e082759a26b8 doc/ChangeLog --- a/doc/ChangeLog Tue Apr 07 18:25:31 2015 +0200 +++ b/doc/ChangeLog Tue Apr 07 19:07:10 2015 +0200 @@ -17,6 +17,8 @@ *** You should have received a copy of the GNU Affero General Public License*** *** along with this program. If not, see . *** ******************************************************************************** +2015-XX-XX John Schneiderman 0.5.0 +- Split configuration file into logical sections. 2015-03-28 John Schneiderman 0.4.0 - Ability to add a plug-in to a managed repository. - Ability to remove a plug-in from a managed repository. diff -r a1b9dc5efa75 -r e082759a26b8 setup.py --- a/setup.py Tue Apr 07 18:25:31 2015 +0200 +++ b/setup.py Tue Apr 07 19:07:10 2015 +0200 @@ -78,7 +78,7 @@ ( "share/" + SHORT_NAME, [ - 'data/ignores.xml' + 'ignores.xml' ] ), ], diff -r a1b9dc5efa75 -r e082759a26b8 src/config.py --- a/src/config.py Tue Apr 07 18:25:31 2015 +0200 +++ b/src/config.py Tue Apr 07 19:07:10 2015 +0200 @@ -25,30 +25,42 @@ # The configuration file parser. __parser = None + # The absolute directory path and file name of the hg command. __hgCommand = None - # The absolute directory path to the managed HgWeb repositories. - __repositoryPath = None - # The absolute directory path to the HgWeb web-server. - __hgWebPath = None - # The user-name of the Mercurial web-manager. - __hgUser = None @property def HgCommand(self): """ Gets the command for executing mercurial. """ return self.__hgCommand + # The absolute directory path to the managed HgWeb repositories. + __repositoryPath = None + @property def RepositoryPath(self): """ Gets the directory path to the managed repositories. """ return self.__repositoryPath + # The absolute directory path to the HgWeb web-server site. + __hgWebPath = None + @property def HgWebPath(self): - """ Gets the directory path to the repository web-server. """ + """ Gets the directory path to the repository web-server site. """ return self.__hgWebPath + # The directory path for HWM data. + __dataPath = None + + @property + def DataPath(self): + """ Gets the directory path to the HWM data directory. """ + return self.__dataPath + + # The user-name of the Mercurial web-manager. + __hgUser = None + @property def HgUser(self): """ Gets the user-name of the web-manager. """ @@ -59,29 +71,46 @@ @param[in] path The path and file name of the configuration file. - @throws ConfigParser.Error When the configuration file cannot be - found. + @throws ValueError When the configuration file cannot be found. + @throw RuntimeError When the configuration file is missing required + entries. """ - from ConfigParser import SafeConfigParser, Error + from ConfigParser import SafeConfigParser self.__parser = SafeConfigParser() if not self.__parser.read(path): raise ValueError("Failed to find configuration file.") if self.__parser.has_section('Mercurial'): - if self.__parser.has_option('Mercurial', 'Base'): - self.__repositoryPath = self.__parser.get('Mercurial', 'Base') - if self.__parser.has_option('Mercurial', 'Command'): self.__hgCommand = self.__parser.get('Mercurial', 'Command') + else: + self.__hgCommand = '/usr/bin/hg' + else: + self.__hgCommand = '/usr/bin/hg' - if self.__parser.has_option('Mercurial', 'User'): - self.__hgUser = self.__parser.get('Mercurial', 'User') + if self.__parser.has_section('HgWeb'): + if self.__parser.has_option('HgWeb', 'Base'): + self.__repositoryPath = self.__parser.get('HgWeb', 'Base') + else: + raise RuntimeError('Failed to locate the HgWeb-Base entry') - if self.__parser.has_option('Mercurial', 'Web'): - self.__hgWebPath = self.__parser.get('Mercurial', 'Web') + if self.__parser.has_option('HgWeb', 'Server'): + self.__hgWebPath = self.__parser.get('HgWeb', 'Server') + else: + raise RuntimeError('Failed to locate the HgWeb-Server entry') else: - self.__hgUser = "hg" - self.__repositoryPath = "/var/hg/repos" - self.__hgCommand = "/usr/bin/hg" - self.__hgWebPath = "/var/www/hgweb" + raise RuntimeError('Failed to locate the HgWeb configuration section') + + if self.__parser.has_section('HWM'): + if self.__parser.has_option('HWM', 'Data'): + self.__dataPath = self.__parser.get('HWM', 'Data') + else: + self.__dataPath = '/usr/share/hwm' + + if self.__parser.has_option('HWM', 'Manager'): + self.__hgUser = self.__parser.get('HWM', 'Manager') + else: + raise RuntimeError('Failed to locate the HWM-Manager entry') + else: + raise RuntimeError('Failed to locate the HWM configuration section') diff -r a1b9dc5efa75 -r e082759a26b8 src/hwm.py --- a/src/hwm.py Tue Apr 07 18:25:31 2015 +0200 +++ b/src/hwm.py Tue Apr 07 19:07:10 2015 +0200 @@ -77,6 +77,7 @@ if __name__ == '__main__': import _app_info + import sys try: # Display license @@ -90,7 +91,6 @@ from manager import settings import argparse import manager - import sys if not is_hgWeb_user(settings.HgUser): print >>sys.stderr, 'Must execute as the Mercurial Web manager.' diff -r a1b9dc5efa75 -r e082759a26b8 src/manager.py --- a/src/manager.py Tue Apr 07 18:25:31 2015 +0200 +++ b/src/manager.py Tue Apr 07 19:07:10 2015 +0200 @@ -272,7 +272,7 @@ # Extract Ignore Collection if ignoreGroups is None: ignoreGroups = [] - ignores = ignorepo.extract('ignores.xml') + ignores = ignorepo.extract(os.path.join(settings.DataPath, 'ignores.xml')) if skipCommon: del ignores['Common']