[PATCH pykickstart] (v2) Add lang --addsupport option

Radek Vykydal rvykydal at redhat.com
Mon Mar 25 14:48:35 UTC 2013


---
 pykickstart/commands/lang.py    | 34 ++++++++++++++++++++++++++++++++++
 pykickstart/handlers/control.py |  2 +-
 tests/commands/lang.py          | 17 +++++++++++++++++
 3 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/pykickstart/commands/lang.py b/pykickstart/commands/lang.py
index dbdc852..b44bc82 100644
--- a/pykickstart/commands/lang.py
+++ b/pykickstart/commands/lang.py
@@ -52,3 +52,37 @@ class FC3_Lang(KickstartCommand):
 
         self.lang = extra[0]
         return self
+
+class F19_Lang(FC3_Lang):
+    removedKeywords = FC3_Lang.removedKeywords
+    removedAttrs = FC3_Lang.removedAttrs
+
+    def __init__(self, writePriority=0, *args, **kwargs):
+        FC3_Lang.__init__(self, writePriority, *args, **kwargs)
+        self.addsupport = kwargs.get("addsupport", [])
+
+        self.op = self._getParser()
+
+    def __str__(self):
+        s = FC3_Lang.__str__(self)
+        if s and self.addsupport:
+            s = s.rstrip()
+            s += " --addsupport=%s\n" % ",".join(self.addsupport)
+        return s
+
+    def _getParser(self):
+        def list_cb (option, opt_str, value, parser):
+            for item in value.split(','):
+                if item:
+                    parser.values.ensure_value(option.dest, []).append(item)
+
+        op = FC3_Lang._getParser(self)
+        op.add_option("--addsupport", dest="addsupport", action="callback",
+                      callback=list_cb, nargs=1, type="string")
+        return op
+
+    def parse(self, args):
+        FC3_Lang.parse(self, args)
+        (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno)
+        self._setToSelf(self.op, opts)
+        return self
diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py
index 52b0a94..113de2d 100644
--- a/pykickstart/handlers/control.py
+++ b/pykickstart/handlers/control.py
@@ -971,7 +971,7 @@ commandMap = {
         "iscsi": iscsi.F17_Iscsi,
         "iscsiname": iscsiname.FC6_IscsiName,
         "keyboard": keyboard.F18_Keyboard,
-        "lang": lang.FC3_Lang,
+        "lang": lang.F19_Lang,
         "logging": logging.FC6_Logging,
         "logvol": logvol.F18_LogVol,
         "mediacheck": mediacheck.FC4_MediaCheck,
diff --git a/tests/commands/lang.py b/tests/commands/lang.py
index b78e4da..d5352e4 100644
--- a/tests/commands/lang.py
+++ b/tests/commands/lang.py
@@ -17,5 +17,22 @@ class FC3_TestCase(CommandTest):
         self.assert_parse_error("lang", KickstartValueError)
         self.assert_parse_error("lang en_US en_CA", KickstartValueError)
 
+class F19_TestCase(FC3_TestCase):
+    command = "lang"
+
+    def runTest(self):
+
+        # pass
+        self.assert_parse("lang en_US")
+        self.assert_parse("lang en_US --addsupport=cs_CZ")
+        self.assert_parse("lang en_US --addsupport=sr_RS.UTF-8 at latin")
+        self.assert_parse("lang en_US --addsupport=cs_CZ,fr_FR")
+
+        # fail
+        # Fail if less than or more than one argument is specified
+        self.assert_parse_error("lang", KickstartValueError)
+        self.assert_parse_error("lang en_US en_CA", KickstartValueError)
+        self.assert_parse_error("lang --addsupport=en_US", KickstartValueError)
+
 if __name__ == "__main__":
     unittest.main()
-- 
1.7.11.7



More information about the anaconda-patches mailing list