diff --git a/ament_package/template/prefix_level/_local_setup_util.py b/ament_package/template/prefix_level/_local_setup_util.py index c0ea86d..d290ac0 100644 --- a/ament_package/template/prefix_level/_local_setup_util.py +++ b/ament_package/template/prefix_level/_local_setup_util.py @@ -54,8 +54,9 @@ def main(argv=sys.argv[1:]): # noqa: D103 FORMAT_STR_USE_ENV_VAR = '%{name}%' FORMAT_STR_INVOKE_SCRIPT = \ 'call:_ament_prefix_bat_call_script "{script_path}"' - FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if "%{name}:~-1%==";" ' \ - 'set {name}=%{name}:~0,-1%' + # can't use `if` here since each line is being `call`-ed + FORMAT_STR_REMOVE_TRAILING_SEPARATOR = \ + 'call:_ament_prefix_bat_strip_trailing_semicolon "{name}"' else: assert False, 'Unknown primary extension: ' + args.primary_extension diff --git a/ament_package/template/prefix_level/local_setup.bat.in b/ament_package/template/prefix_level/local_setup.bat.in index 8f19bba..8f44e63 100644 --- a/ament_package/template/prefix_level/local_setup.bat.in +++ b/ament_package/template/prefix_level/local_setup.bat.in @@ -57,3 +57,17 @@ goto:eof echo not found: "%~1" 1>&2 ) goto:eof + + +:: strip a trailing semicolon from an environment variable if applicable +:: first argument: the environment variable name +:_ament_prefix_bat_strip_trailing_semicolon + setlocal enabledelayedexpansion + set "name=%~1" + set "value=!%name%!" + if "%value:~-1%"==";" set "value=%value:~0,-1%" + :: set result variable in parent scope + endlocal & ( + set "%~1=%value%" + ) +goto:eof