diff options
author | necoro <> | 2006-10-05 11:56:16 +0000 |
---|---|---|
committer | necoro <> | 2006-10-05 11:56:16 +0000 |
commit | dfbeab611f68502631ed4c575f5809064c948d58 (patch) | |
tree | 626675b36f327588ce3ef9d70f28fd5547e94570 /geneticone/backend/flags.py | |
parent | 46c5530abed392a2d7d91da165cffca99938f906 (diff) | |
download | portato-dfbeab611f68502631ed4c575f5809064c948d58.tar.gz portato-dfbeab611f68502631ed4c575f5809064c948d58.tar.bz2 portato-dfbeab611f68502631ed4c575f5809064c948d58.zip |
Added preference window
Diffstat (limited to 'geneticone/backend/flags.py')
-rw-r--r-- | geneticone/backend/flags.py | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/geneticone/backend/flags.py b/geneticone/backend/flags.py index 20b63ef..3065fbe 100644 --- a/geneticone/backend/flags.py +++ b/geneticone/backend/flags.py @@ -14,11 +14,17 @@ import os.path from subprocess import Popen, PIPE # needed for grep from geneticone.helper import * +from portage_helper import split_package_name import package import portage from portage_util import unique_array +CONFIG = { + "usefile" : "geneticone", + "usePerVersion" : True + } + ### GENERAL PART ### def grep (pkg, path): @@ -66,6 +72,19 @@ def get_data(pkg, path): return flags +def set_config (cfg): + """This function sets the CONFIG-variable for the whole module. Use this instead of modifying CONFIG directly. + @param cfg: a dictionary with at least all the keys of the CONFIG-var + @type cfg: dict + @raises KeyError: if a keyword is missing in the new cfg""" + + for i in CONFIG.keys(): + if not i in cfg: + raise KeyError, "Missing keyword in config: "+i + + for i in CONFIG: + CONFIG[i] = cfg[i] + ### USE FLAG PART ### USE_PATH = os.path.join(portage.USER_CONFIG_PATH,"package.use") USE_PATH_IS_DIR = os.path.isdir(USE_PATH) @@ -149,7 +168,7 @@ def set_use_flag (pkg, flag): if not added: path = USE_PATH if USE_PATH_IS_DIR: - path = os.path.join(USE_PATH,"geneticone") + path = os.path.join(USE_PATH,CONFIG["usefile"]) try: newUseFlags[cpv].remove((path, -1, invFlag, False)) @@ -216,18 +235,13 @@ def write_use_flags (): file_cache = {} # cache for having to read the file only once: name->[lines] for cpv in newUseFlags: + flagsToAdd = [] # this is used for collecting the flags to be inserted in a _new_ line for file, line, flag, delete in newUseFlags[cpv]: line = int(line) # it is saved as a string so far! # add new line if line == -1: - msg = "\n#geneticone update#\n=%s %s\n" % (cpv, flag) - if not file in file_cache: - f = open(file, "a") - f.write(msg) - f.close() - else: - file_cache[file].append(msg) + flagsToAdd.append(flag) # change a line else: if not file in file_cache: @@ -258,6 +272,20 @@ def write_use_flags (): else: insert(flag,l) file_cache[file][line-1] = " ".join(l) + + # write new lines + msg = "\n#geneticone update#\n" + if CONFIG["usePerVersion"]: + msg += "=%s %s\n" % (cpv, ' '.join(flagsToAdd)) + else: + list = split_package_name(cpv) + msg += "%s/%s %s\n" % (list[0], list[1], ' '.join(flagsToAdd)) + if not file in file_cache: + f = open(file, "a") + f.write(msg) + f.close() + else: + file_cache[file].append(msg) # write to disk for file in file_cache.keys(): |