From e571d1d525359f562074d6922ac06e35ac49b48c Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Wed, 28 Nov 2012 01:04:15 +0000 Subject: Refactor to use sugar-runner --- (limited to 'devbot') diff --git a/devbot/config.py b/devbot/config.py index d5e1a74..7b9978c 100644 --- a/devbot/config.py +++ b/devbot/config.py @@ -171,20 +171,37 @@ def set_prefs_path(path): global prefs_path prefs_path = path -def get_pref(name): - prefs = {} +def _read_prefs(): + global prefs_path if not os.path.exists(prefs_path): - return None + return {} + prefs = {} with open(prefs_path) as f: for line in f.readlines(): splitted = line.strip().split("=") if len(splitted) == 2: prefs[splitted[0]] = splitted[1] + return prefs + +def _save_prefs(prefs): + global prefs_path + + with open(prefs_path, "w") as f: + for pref in prefs.items(): + f.write("%s\n" % "=".join(pref)) + +def get_pref(name): + prefs = _read_prefs() return prefs.get(name, None) +def set_pref(name, value): + prefs = _read_prefs() + prefs[name] = value + _save_prefs(prefs) + def load_plugins(): for loader, name, ispkg in pkgutil.iter_modules(plugins.__path__): f, filename, desc = imp.find_module(name, plugins.__path__) diff --git a/devbot/environ.py b/devbot/environ.py index 5879995..2107792 100644 --- a/devbot/environ.py +++ b/devbot/environ.py @@ -58,6 +58,10 @@ def _setup_variables(): os.environ["GTK_DATA_PREFIX"] = config.prefix_dir os.environ["GTK_PATH"] = os.path.join(config.lib_dir, "gtk-2.0") + profile = config.get_pref("PROFILE") + if profile is not None: + os.environ["SUGAR_PROFILE"] = profile + def _setup_gconf(): gconf_dir = os.path.join(config.etc_dir, "gconf") gconf_pathdir = os.path.join(gconf_dir, "2") diff --git a/devbot/run.py b/devbot/run.py index 1bbe695..451da96 100644 --- a/devbot/run.py +++ b/devbot/run.py @@ -1,9 +1,29 @@ #!/usr/bin/python -u import os +import string +import random from devbot import environ +from devbot import config -def run_command(args): +def run(args): environ.setup() os.execlp(args[0], *args) + +def run_sugar(): + profile_env = os.environ.get("SUGAR_PROFILE", None) + profile_pref = config.get_pref("PROFILE") + + if profile_env is not None: + if profile_pref is None: + config.set_pref("PROFILE", _get_random_id()) + elif profile_pref == profile_env: + print "Cannot run two instances with the same profile." + return + + run(["sugar-runner"]) + +def _get_random_id(): + return ''.join(random.choice(string.letters) for i in xrange(8)) + -- cgit v0.9.1