From 62f63c0d37851a8656cd7bc7d31a43357a8100a7 Mon Sep 17 00:00:00 2001 From: Chris Lumens Date: Thu, 23 Aug 2007 19:45:51 +0000 Subject: [PATCH] Add support for the --priority, --includepkgs, and --excludepkgs options. --- ChangeLog | 7 +++++ pykickstart/commands/repo.py | 62 +++++++++++++++++++++++++++++++++++++++++ pykickstart/handlers/control.py | 4 +-- 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bfdc78..376dcdf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-23 Chris Lumens + + * pykickstart/commands/repo.py (F8_RepoData, F8_Repo): Add support + for the --priority, --includepkgs, and --excludepkgs options. + * pykickstart/handlers/control.py: Use F8_RepoData and F8_Repo for + Fedora 8. + 2007-08-22 Chris Lumens * pykickstart/commands/reboot.py (FC6_Reboot.__str__): Fix newline at diff --git a/pykickstart/commands/repo.py b/pykickstart/commands/repo.py index 59ad787..a2d723a 100644 --- a/pykickstart/commands/repo.py +++ b/pykickstart/commands/repo.py @@ -22,6 +22,7 @@ from pykickstart.constants import * from pykickstart.errors import * from pykickstart.options import * +import string from rhpl.translate import _ import rhpl.translate as translate @@ -42,6 +43,27 @@ class FC6_RepoData(BaseData): return "repo --name=%s %s\n" % (self.name, urlopt) +class F8_RepoData(FC6_RepoData): + def __init__(self, baseurl="", mirrorlist="", name="", priority=None, + includepkgs=[], excludepkgs=[]): + FC6_RepoData.__init__(self, baseurl=baseurl, mirrorlist=mirrorlist, + name=name) + self.priority = priority + self.includepkgs = includepkgs + self.excludepkgs = excludepkgs + + def __str__(self): + str = FC6_RepoData.__str__(self).rstrip() + + if self.priority: + str += " --priority=%s" % self.priority + if self.includepkgs: + str += " --includepkgs=\"%s\"" % string.join(self.includepkgs, ",") + if self.excludepkgs: + str += " --excludepkgs=\"%s\"" % string.join(self.excludepkgs, ",") + + return str + "\n" + class FC6_Repo(KickstartCommand): def __init__(self, writePriority=0, repoList=None): KickstartCommand.__init__(self, writePriority) @@ -80,3 +102,43 @@ class FC6_Repo(KickstartCommand): def add(self, newObj): self.repoList.append(newObj) + +class F8_Repo(FC6_Repo): + def __init__(self, writePriority=0, repoList=None): + FC6_Repo.__init__(self, writePriority, repoList) + + def __str__(self): + retval = "" + for repo in self.repoList: + retval += repo.__str__() + + return retval + + def parse(self, args): + def list_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = KSOptionParser(lineno=self.lineno) + op.add_option("--name", dest="name", required=1) + op.add_option("--baseurl") + op.add_option("--mirrorlist") + op.add_option("--priority", action="store", type="int") + op.add_option("--excludepkgs", action="callback", callback=list_cb, + nargs=1, type="string") + op.add_option("--includepkgs", action="callback", callback=list_cb, + nargs=1, type="string") + + (opts, extra) = op.parse_args(args=args) + + # This is lame, but I can't think of a better way to make sure only + # one of these two is specified. + if opts.baseurl and opts.mirrorlist: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --baseurl and --mirrorlist may be specified for repo command.")) + + if not opts.baseurl and not opts.mirrorlist: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --baseurl or --mirrorlist must be specified for repo command.")) + + rd = F8_RepoData() + self._setToObj(op, opts, rd) + self.add(rd) diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py index bfddcda..90dfbb6 100644 --- a/pykickstart/handlers/control.py +++ b/pykickstart/handlers/control.py @@ -332,7 +332,7 @@ commandMap = { "poweroff": reboot.FC6_Reboot, "raid": raid.F7_Raid, "reboot": reboot.FC6_Reboot, - "repo": repo.FC6_Repo, + "repo": repo.F8_Repo, "rootpw": rootpw.F8_RootPw, "selinux": selinux.FC3_SELinux, "services": services.FC6_Services, @@ -576,7 +576,7 @@ dataMap = { "NetworkData": network.FC6_NetworkData, "PartData": partition.FC4_PartData, "RaidData": raid.F7_RaidData, - "RepoData": repo.FC6_RepoData, + "RepoData": repo.F8_RepoData, "UserData": user.F8_UserData, "VolGroupData": volgroup.FC3_VolGroupData, "ZFCPData": zfcp.FC3_ZFCPData, -- 2.11.4.GIT