Mercurial > mozilla > hg > ProfileManager
view profilemanager/manager.py @ 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 |
line wrap: on
line source
""" manage Mozilla/Firefox profiles """ import os import shutil class ProfileNotFound(Exception): """ exception when a profile is specified but is not present in a given .ini file """ class ProfileManager(object): def __init__(self, profiles): """ - profiles: filesystem path to profiles.ini file """ self.profiles = profiles 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` """ source_path = self.path(source) # fs path of the `from` profile dest_path = self.path(dest) # fs path to back up to shutil.copytree(src_path, backup, symlinks=False) def backup(self, profile, dest=None): """ backup the profile - profile: name of the profile to be backed up - dest: name of the destination (optional) """ # XXX should use `self.clone` ! if dest is None: dest = '' self.clone(profile, dest) # TODO: add something like # `Backup=$(profile)s.$(datestamp)s.bak` # to self.profiles def restore(self, profile, date=None, delete=False): """ restore the profile from a backup the most recent backup is used unless `date` is given - date : date to restore from - delete : delete the backup after restoration """ if delete: # delete the backup pass def merge(self, *profiles): """merge a set of profiles (not trivial!)""" raise NotImplementedError ### internal functions def path(self, profile): """returns the path to the profile"""