@@ -37,14 +37,29 @@ def add_arguments(self, parser, cli_name): # noqa: D102
3737 'node_name' , help = 'Name of the ROS node' )
3838 arg .completer = NodeNameCompleter (
3939 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+
4341 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"' )
4544 arg .completer = ParameterNameCompleter ()
45+
4646 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
4863
4964 def main (self , * , args ): # noqa: D102
5065 with NodeStrategy (args ) as node :
@@ -56,23 +71,19 @@ def main(self, *, args): # noqa: D102
5671 return 'Node not found'
5772
5873 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 )
6375 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
6578
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