in rostran/providers/ros/template.py [0:0]
def _transform_parameters(self) -> List[tf.Variable]:
tf_vars = []
for name, value in self.parameters.items():
tf_name = self.get_tf_params(camel_to_snake(name))
value = value.copy()
param_type = value.pop("Type", None)
tf_value = dict()
if param_type == "String":
tf_value["type"] = "string"
elif param_type == "Number":
tf_value["type"] = "number"
elif param_type == "Boolean":
tf_value["type"] = "bool"
elif param_type == "CommaDelimitedList":
tf_value["type"] = "list(any)"
else:
msg = f"The params type {param_type} is not supported, may be ignored when referenced by a resource."
tf_value["comment-type"] = tf.CommentType(msg)
tf_value["type"] = "any"
param_default = value.pop("Default", None)
if param_default:
if param_type in ("String", "Number", "Boolean"):
tf_value["default"] = tf.convert_to_tf_type(param_default, param_type.lower())
else:
tf_value["default"] = self.resolve_values(param_default)
param_sensitive = value.pop("NoEcho", None)
if param_sensitive:
tf_value["sensitive"] = tf.BooleanType(True)
required = value.pop("Required", None)
if required:
tf_value["nullable"] = tf.BooleanType(False)
if value:
value = json.dumps(value, indent=2, ensure_ascii=False)
value = textwrap.indent(value, " ")
if "${" in value:
value = value.replace("${", "$${")
tf_value["description"] = f"<<EOT\n{value}\n EOT"
var_block = tf.Variable(tf_name, tf_value)
tf_vars.append(var_block)
return tf_vars