Index: third_party/mozprofile/mozprofile/cli.py |
=================================================================== |
--- third_party/mozprofile/mozprofile/cli.py (revision 0) |
+++ third_party/mozprofile/mozprofile/cli.py (revision 0) |
@@ -0,0 +1,94 @@ |
+#!/usr/bin/env python |
+ |
+# This Source Code Form is subject to the terms of the Mozilla Public |
+# License, v. 2.0. If a copy of the MPL was not distributed with this file, |
+# You can obtain one at http://mozilla.org/MPL/2.0/. |
+ |
+""" |
+Creates and/or modifies a Firefox profile. |
+The profile can be modified by passing in addons to install or preferences to set. |
+If no profile is specified, a new profile is created and the path of the resulting profile is printed. |
+""" |
+ |
+import sys |
+from addons import AddonManager |
+from optparse import OptionParser |
+from prefs import Preferences |
+from profile import Profile |
+ |
+__all__ = ['MozProfileCLI', 'cli'] |
+ |
+class MozProfileCLI(object): |
+ |
+ module = 'mozprofile' |
+ |
+ def __init__(self, args=sys.argv[1:]): |
+ self.parser = OptionParser(description=__doc__) |
+ self.add_options(self.parser) |
+ (self.options, self.args) = self.parser.parse_args(args) |
+ |
+ def add_options(self, parser): |
+ |
+ parser.add_option("-p", "--profile", dest="profile", |
+ help="The path to the profile to operate on. If none, creates a new profile in temp directory") |
+ parser.add_option("-a", "--addon", dest="addons", |
+ action="append", default=[], |
+ help="Addon paths to install. Can be a filepath, a directory containing addons, or a url") |
+ parser.add_option("--addon-manifests", dest="addon_manifests", |
+ action="append", |
+ help="An addon manifest to install") |
+ parser.add_option("--pref", dest="prefs", |
+ action='append', default=[], |
+ help="A preference to set. Must be a key-value pair separated by a ':'") |
+ parser.add_option("--preferences", dest="prefs_files", |
+ action='append', default=[], |
+ metavar="FILE", |
+ help="read preferences from a JSON or INI file. For INI, use 'file.ini:section' to specify a particular section.") |
+ |
+ def profile_args(self): |
+ """arguments to instantiate the profile class""" |
+ return dict(profile=self.options.profile, |
+ addons=self.options.addons, |
+ addon_manifests=self.options.addon_manifests, |
+ preferences=self.preferences()) |
+ |
+ def preferences(self): |
+ """profile preferences""" |
+ |
+ # object to hold preferences |
+ prefs = Preferences() |
+ |
+ # add preferences files |
+ for prefs_file in self.options.prefs_files: |
+ prefs.add_file(prefs_file) |
+ |
+ # change CLI preferences into 2-tuples |
+ separator = ':' |
+ cli_prefs = [] |
+ for pref in self.options.prefs: |
+ if separator not in pref: |
+ self.parser.error("Preference must be a key-value pair separated by a ':' (You gave: %s)" % pref) |
+ cli_prefs.append(pref.split(separator, 1)) |
+ |
+ # string preferences |
+ prefs.add(cli_prefs, cast=True) |
+ |
+ return prefs() |
+ |
+ |
+def cli(args=sys.argv[1:]): |
+ |
+ # process the command line |
+ cli = MozProfileCLI(args) |
+ |
+ # create the profile |
+ kwargs = cli.profile_args() |
+ kwargs['restore'] = False |
+ profile = Profile(**kwargs) |
+ |
+ # if no profile was passed in print the newly created profile |
+ if not cli.options.profile: |
+ print profile.profile |
+ |
+if __name__ == '__main__': |
+ cli() |
Property changes on: third_party/mozprofile/mozprofile/cli.py |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |