@@ -37,14 +37,29 @@ def add_arguments(self, parser, cli_name): # noqa: D102
37
37
'node_name' , help = 'Name of the ROS node' )
38
38
arg .completer = NodeNameCompleter (
39
39
include_hidden_nodes_key = 'include_hidden_nodes' )
40
- parser .add_argument (
41
- '--include-hidden-nodes' , action = 'store_true' ,
42
- help = 'Consider hidden nodes as well' )
40
+
43
41
arg = parser .add_argument (
44
- 'parameter_name' , help = 'Name of the parameter' )
42
+ 'parameters' , nargs = '*' ,
43
+ help = 'List of parameter name and value pairs i.e. "int_param 1 str_param hello_world"' )
45
44
arg .completer = ParameterNameCompleter ()
45
+
46
46
parser .add_argument (
47
- 'value' , help = 'Value of the parameter' )
47
+ '--include-hidden-nodes' , action = 'store_true' ,
48
+ help = 'Consider hidden nodes as well' )
49
+
50
+ def build_parameters (self , params ):
51
+ parameters = []
52
+ if len (params ) % 2 :
53
+ raise RuntimeError ('Must pass list of parameter name and value pairs' )
54
+
55
+ params = [(params [i ], params [i + 1 ]) for i in range (0 , len (params ), 2 )]
56
+ for param_str in params :
57
+ parameter = Parameter ()
58
+ parameter .name = param_str [0 ]
59
+ parameter .value = get_parameter_value (string_value = param_str [1 ])
60
+ parameters .append (parameter )
61
+
62
+ return parameters
48
63
49
64
def main (self , * , args ): # noqa: D102
50
65
with NodeStrategy (args ) as node :
@@ -56,23 +71,19 @@ def main(self, *, args): # noqa: D102
56
71
return 'Node not found'
57
72
58
73
with DirectNode (args ) as node :
59
- parameter = Parameter ()
60
- Parameter .name = args .parameter_name
61
- parameter .value = get_parameter_value (string_value = args .value )
62
-
74
+ parameters = self .build_parameters (args .parameters )
63
75
response = call_set_parameters (
64
- node = node , node_name = args .node_name , parameters = [parameter ])
76
+ node = node , node_name = args .node_name , parameters = parameters )
77
+ results = response .results
65
78
66
- # output response
67
- assert len (response .results ) == 1
68
- result = response .results [0 ]
69
- if result .successful :
70
- msg = 'Set parameter successful'
71
- if result .reason :
72
- msg += ': ' + result .reason
73
- print (msg )
74
- else :
75
- msg = 'Setting parameter failed'
76
- if result .reason :
77
- msg += ': ' + result .reason
78
- print (msg , file = sys .stderr )
79
+ for result in results :
80
+ if result .successful :
81
+ msg = 'Set parameter successful'
82
+ if result .reason :
83
+ msg += ': ' + result .reason
84
+ print (msg )
85
+ else :
86
+ msg = 'Setting parameter failed'
87
+ if result .reason :
88
+ msg += ': ' + result .reason
89
+ print (msg , file = sys .stderr )
0 commit comments