summaryrefslogtreecommitdiffstats
path: root/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
diff options
context:
space:
mode:
authorMatthewLi <matthew.lijun@huawei.com>2016-03-25 03:55:53 -0400
committerMatthewLi <matthew.lijun@huawei.com>2016-03-25 03:55:53 -0400
commitf84c8dcc22f1499128893e62b0e15b4b592c47ba (patch)
treeee14029aa59c076fdfde1c504a385f3389477a6a /testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
parent7ba76747d55669e2bbaf70a3061e1c0b5dea912e (diff)
adjust project directories
JIRA: BOTTLENECK-56 Change-Id: Ic9acad5eaa4917093bdb85a80960f796f5b4ba7f Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
Diffstat (limited to 'testsuites/vstf/vstf_scripts/vstf/common/cliutil.py')
-rw-r--r--testsuites/vstf/vstf_scripts/vstf/common/cliutil.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py b/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
new file mode 100644
index 00000000..541bba7b
--- /dev/null
+++ b/testsuites/vstf/vstf_scripts/vstf/common/cliutil.py
@@ -0,0 +1,36 @@
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+def arg(*args, **kwargs):
+ """Decorator for CLI args.
+
+ Example:
+
+ >>> @arg("name", help="Name of the new entity")
+ ... def entity_create(args):
+ ... pass
+ """
+ def _decorator(func):
+ add_arg(func, *args, **kwargs)
+ return func
+ return _decorator
+
+
+def add_arg(func, *args, **kwargs):
+ """Bind CLI arguments to a shell.py `do_foo` function."""
+
+ if not hasattr(func, 'arguments'):
+ func.arguments = []
+
+ # NOTE(sirp): avoid dups that can occur when the module is shared across
+ # tests.
+ if (args, kwargs) not in func.arguments:
+ # Because of the semantics of decorator composition if we just append
+ # to the options list positional options will appear to be backwards.
+ func.arguments.insert(0, (args, kwargs)) \ No newline at end of file