1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-02-20 20:09:11 +00:00

Adding "agruments" type

This type represents arguments that are passed on a command line to an
application. It has both string and list representations.
This commit is contained in:
Sergei Trofimov 2015-05-12 11:19:28 +01:00
parent b2981a57bc
commit 5daa9014a8

View File

@ -25,8 +25,10 @@ A lot of these are intened to stpecify type conversions declaratively in place l
is not the best language to use for configuration.
"""
import os
import re
import math
import shlex
from collections import defaultdict
from wlauto.utils.misc import isiterable, to_identifier
@ -246,3 +248,31 @@ class caseless_string(str):
def format(self, *args, **kwargs):
return caseless_string(super(caseless_string, self).format(*args, **kwargs))
class arguments(list):
"""
Represents command line arguments to be passed to a program.
"""
def __init__(self, value=None):
if isiterable(value):
super(arguments, self).__init__(map(str, value))
elif isinstance(value, basestring):
posix = os.name != 'nt'
super(arguments, self).__init__(shlex.split(value, posix=posix))
elif value is None:
super(arguments, self).__init__()
else:
super(arguments, self).__init__([str(value)])
def append(self, value):
return super(arguments, self).append(str(value))
def extend(self, values):
return super(arguments, self).extend(map(str, values))
def __str__(self):
return ' '.join(self)