dtoc: Support reading a list of arguments
It is helpful to support a string or stringlist containing a list of space-separated arguments, for example: args = "-n fred", "-a", "123"; This resolves to the list: -n fred -a 123 which can be passed to a program as arguments. Add a helper to do the required processing. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
dd857ee761
commit
7e4b66aa87
@ -184,6 +184,18 @@ def GetStringList(node, propname, default=None):
|
||||
return [strval]
|
||||
return value
|
||||
|
||||
def GetArgs(node, propname):
|
||||
prop = node.props.get(propname)
|
||||
if not prop:
|
||||
raise ValueError(f"Node '{node.path}': Expected property '{propname}'")
|
||||
if prop.bytes:
|
||||
value = GetStringList(node, propname)
|
||||
else:
|
||||
value = []
|
||||
lists = [v.split() for v in value]
|
||||
args = [x for l in lists for x in l]
|
||||
return args
|
||||
|
||||
def GetBool(node, propname, default=False):
|
||||
"""Get an boolean from a property
|
||||
|
||||
|
@ -62,5 +62,6 @@
|
||||
|
||||
orig-node {
|
||||
orig = <1 23 4>;
|
||||
args = "-n first", "second", "-p", "123,456", "-x";
|
||||
};
|
||||
};
|
||||
|
@ -652,6 +652,21 @@ class TestFdtUtil(unittest.TestCase):
|
||||
self.assertEqual(['test'],
|
||||
fdt_util.GetStringList(self.node, 'missing', ['test']))
|
||||
|
||||
def testGetArgs(self):
|
||||
node = self.dtb.GetNode('/orig-node')
|
||||
self.assertEqual(['message'], fdt_util.GetArgs(self.node, 'stringval'))
|
||||
self.assertEqual(
|
||||
['multi-word', 'message'],
|
||||
fdt_util.GetArgs(self.node, 'stringarray'))
|
||||
self.assertEqual([], fdt_util.GetArgs(self.node, 'boolval'))
|
||||
self.assertEqual(['-n', 'first', 'second', '-p', '123,456', '-x'],
|
||||
fdt_util.GetArgs(node, 'args'))
|
||||
with self.assertRaises(ValueError) as exc:
|
||||
fdt_util.GetArgs(self.node, 'missing')
|
||||
self.assertIn(
|
||||
"Node '/spl-test': Expected property 'missing'",
|
||||
str(exc.exception))
|
||||
|
||||
def testGetBool(self):
|
||||
self.assertEqual(True, fdt_util.GetBool(self.node, 'boolval'))
|
||||
self.assertEqual(False, fdt_util.GetBool(self.node, 'missing'))
|
||||
|
Loading…
Reference in New Issue
Block a user