# DistUpgradeConfigParser.py # # Copyright (c) 2004-2014 Canonical # # Author: Michael Vogt <michael.vogt@ubuntu.com> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA from configparser import NoOptionError, NoSectionError from configparser import ConfigParser as SafeConfigParser import subprocess import os.path import logging import glob CONFIG_OVERRIDE_DIR = "/etc/update-manager/release-upgrades.d" class DistUpgradeConfig(SafeConfigParser): def __init__(self, datadir, name="DistUpgrade.cfg", override_dir=None, defaults_dir=None): SafeConfigParser.__init__(self) # we support a config overwrite, if DistUpgrade.cfg.dapper exists # and the user runs dapper, that one will be used from_release = subprocess.Popen( ["lsb_release", "-c", "-s"], stdout=subprocess.PIPE, universal_newlines=True).communicate()[0].strip() self.datadir = datadir if os.path.exists(name + "." + from_release): name = name + "." + from_release maincfg = os.path.join(datadir, name) # defaults are read first self.config_files = [] if defaults_dir: for cfg in glob.glob(defaults_dir + "/*.cfg"): self.config_files.append(cfg) # our config file self.config_files += [maincfg] # overrides are read later if override_dir is None: override_dir = CONFIG_OVERRIDE_DIR if override_dir is not None: for cfg in glob.glob(override_dir + "/*.cfg"): self.config_files.append(cfg) self.read(self.config_files) def getWithDefault(self, section, option, default): try: if type(default) == bool: return self.getboolean(section, option) elif type(default) == float: return self.getfloat(section, option) elif type(default) == int: return self.getint(section, option) return self.get(section, option) except (NoSectionError, NoOptionError): return default def getlist(self, section, option): try: tmp = self.get(section, option) except (NoSectionError, NoOptionError): return [] items = [x.strip() for x in tmp.split(",")] return items def getListFromFile(self, section, option): try: filename = self.get(section, option) except NoOptionError: return [] p = os.path.join(self.datadir, filename) if not os.path.exists(p): logging.error("getListFromFile: no '%s' found" % p) with open(p) as f: items = [x.strip() for x in f] return [s for s in items if not s.startswith("#") and not s == ""] if __name__ == "__main__": c = DistUpgradeConfig(".") print(c.getlist("Distro", "MetaPkgs")) print(c.getlist("Distro", "ForcedPurges")) print(c.getListFromFile("Sources", "ValidMirrors")) print(c.getWithDefault("Distro", "EnableApport", True)) print(c.set("Distro", "Foo", "False")) print(c.getWithDefault("Distro", "Foo", True))
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
DistUpgradeApport.py | File | 4.95 KB | 0644 |
|
DistUpgradeAptCdrom.py | File | 12.39 KB | 0644 |
|
DistUpgradeCache.py | File | 52.55 KB | 0644 |
|
DistUpgradeConfigParser.py | File | 3.75 KB | 0644 |
|
DistUpgradeController.py | File | 100.96 KB | 0644 |
|
DistUpgradeFetcher.py | File | 5.83 KB | 0644 |
|
DistUpgradeFetcherCore.py | File | 11.2 KB | 0644 |
|
DistUpgradeFetcherKDE.py | File | 9.72 KB | 0644 |
|
DistUpgradeFetcherSelf.py | File | 2.02 KB | 0644 |
|
DistUpgradeGettext.py | File | 2.97 KB | 0644 |
|
DistUpgradeMain.py | File | 9.1 KB | 0644 |
|
DistUpgradePatcher.py | File | 3.92 KB | 0644 |
|
DistUpgradeQuirks.py | File | 47.38 KB | 0644 |
|
DistUpgradeVersion.py | File | 21 B | 0644 |
|
DistUpgradeView.py | File | 16.2 KB | 0644 |
|
DistUpgradeViewGtk3.py | File | 32.7 KB | 0644 |
|
DistUpgradeViewKDE.py | File | 39.87 KB | 0644 |
|
DistUpgradeViewNonInteractive.py | File | 13.45 KB | 0644 |
|
DistUpgradeViewText.py | File | 12.33 KB | 0644 |
|
GtkProgress.py | File | 3.93 KB | 0644 |
|
MetaRelease.py | File | 16.65 KB | 0644 |
|
QUrlOpener.py | File | 3.24 KB | 0644 |
|
ReleaseNotesViewer.py | File | 7.48 KB | 0644 |
|
ReleaseNotesViewerWebkit.py | File | 2.86 KB | 0644 |
|
SimpleGtk3builderApp.py | File | 2.01 KB | 0644 |
|
SimpleGtkbuilderApp.py | File | 1.99 KB | 0644 |
|
__init__.py | File | 0 B | 0644 |
|
apt_btrfs_snapshot.py | File | 9.64 KB | 0644 |
|
apt_clone.py | File | 32.81 KB | 0644 |
|
dist-upgrade.py | File | 126 B | 0644 |
|
distinfo.py | File | 11.3 KB | 0644 |
|
distro.py | File | 23.16 KB | 0644 |
|
sourceslist.py | File | 18.36 KB | 0644 |
|
telemetry.py | File | 3.4 KB | 0644 |
|
utils.py | File | 17.95 KB | 0644 |
|
xorg_fix_proprietary.py | File | 3.93 KB | 0644 |
|