Mercurial > mozilla > hg > ProfileManager
changeset 4:35dc297efa25
adding listing function and other cleanup
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 05 Apr 2010 13:53:22 -0700 |
parents | 4d1cd60dd2a1 |
children | ca57920aa223 |
files | profilemanager/command.py profilemanager/main.py profilemanager/manager.py |
diffstat | 3 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/profilemanager/command.py Mon Apr 05 13:10:31 2010 -0700 +++ b/profilemanager/command.py Mon Apr 05 13:53:22 2010 -0700 @@ -5,6 +5,7 @@ import inspect import sys from optparse import OptionParser +from pprint import pprint if 'commands' not in globals(): commands = {} @@ -95,7 +96,7 @@ class CommandParser(OptionParser): def __init__(self, commands, description=None, setup=None): usage = '%prog [options] command [command-options]' - OptionParser.__init__(self, description=description) + OptionParser.__init__(self, usage=usage, description=description) for _command in commands: command(_command) self.disable_interspersed_args() @@ -160,5 +161,5 @@ commandparser.error("Too many arguments given") # invoke the command - print getattr(_object, name)(*command_args, **command_options.__dict__) + pprint(getattr(_object, name)(*command_args, **command_options.__dict__))
--- a/profilemanager/main.py Mon Apr 05 13:10:31 2010 -0700 +++ b/profilemanager/main.py Mon Apr 05 13:53:22 2010 -0700 @@ -18,8 +18,9 @@ def main(args=sys.argv[1:]): # global option parsing - commands = [ ProfileManager.clone, - ProfileManager.backup, + commands = [ ProfileManager.backup, + ProfileManager.clone, + ProfileManager.list, ProfileManager.restore, ProfileManager.merge ] parser = CommandParser(commands, setup=create_profilemanager)
--- a/profilemanager/manager.py Mon Apr 05 13:10:31 2010 -0700 +++ b/profilemanager/manager.py Mon Apr 05 13:53:22 2010 -0700 @@ -15,13 +15,27 @@ def __init__(self, profiles): """ - - profiles: profiles.ini file + - profiles: filesystem path to profiles.ini file """ self.profiles = profiles - self.profile_dir = '' + self.profile_dir = os.path.abspath(os.path.dirname(profiles)) ### (public) API + def list(self, directories=False): + """ + lists the profiles available in the config file + """ + from ConfigParser import SafeConfigParser as ConfigParser + parser = ConfigParser() + parser.read(self.profiles) + names = [] + for section in parser.sections(): + if section == 'General': + continue + names.append(parser.get(section, 'name')) + return '\n'.join(names) + def clone(self, source, dest): """ clones the profile `source` and output to `dest`