--- 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@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()