16 from typing
import Dict, List, Optional, Text
23 Substitution that replaces strings on a given file.
30 source_file: launch.SomeSubstitutionsType,
32 condition: Optional[launch.Condition] =
None,
36 from launch.utilities
import (
37 normalize_to_list_of_substitutions,
40 self.
__source_file__source_file = normalize_to_list_of_substitutions(source_file)
42 for key
in replacements:
43 self.
__replacements__replacements[key] = normalize_to_list_of_substitutions(
49 def name(self) -> List[launch.Substitution]:
50 """Getter for name."""
55 """Getter for condition."""
59 """Return a description of this substitution as a string."""
62 def perform(self, context: launch.LaunchContext) -> Text:
63 yaml_filename = launch.utilities.perform_substitutions(context, self.
namename)
65 output_file = tempfile.NamedTemporaryFile(mode=
'w', delete=
False)
68 input_file = open(yaml_filename,
'r')
69 self.
replacereplace(input_file, output_file, replacements)
70 except Exception
as err:
71 print(
'ReplaceString substitution error: ', err)
75 return output_file.name
79 def resolve_replacements(self, context):
80 resolved_replacements = {}
82 resolved_replacements[key] = launch.utilities.perform_substitutions(
85 return resolved_replacements
87 def replace(self, input_file, output_file, replacements):
88 for line
in input_file:
89 for key, value
in replacements.items():
90 if isinstance(key, str)
and isinstance(value, str):
92 line = line.replace(key, value)
95 'A provided replacement pair is not a string. Both key and value should be'
98 output_file.write(line)
def resolve_replacements(self, context)
def replace(self, input_file, output_file, replacements)
Optional[launch.Condition] condition(self)
List[launch.Substitution] name(self)