@@ -133,6 +133,7 @@ class CreateVerbArgs:
133133 env_file : str = ""
134134 proxy_server : str = ""
135135 proxy_ca_cert : str = ""
136+ env_vars : dict = field (default_factory = dict )
136137
137138 @property
138139 def ssh_abs_path_in_docker (self ) -> str :
@@ -583,6 +584,12 @@ def add_arguments(self, parser: argparse.ArgumentParser, cli_name: str):
583584 help = "Path to company CA certificate file for proxy (will be copied to container)" ,
584585 default = None ,
585586 )
587+ parser .add_argument (
588+ "--env-vars" ,
589+ nargs = "*" ,
590+ help = "Additional environment variables to export in the workspace (format: KEY=VALUE)" ,
591+ default = [],
592+ )
586593
587594 def generate_intermediate_dockerfile_content (self , create_args : CreateVerbArgs ) -> str :
588595 if create_args .apt_packages :
@@ -962,6 +969,7 @@ def setup_rtw_in_intermediate_image(
962969 distro = create_args .ros_distro ,
963970 ws_folder = create_args .ws_abs_path_in_docker ,
964971 base_ws = create_args .upstream_ws_name if create_args .has_upstream_ws else "" ,
972+ env_vars = create_args .env_vars ,
965973 ),
966974 )
967975
@@ -1156,6 +1164,20 @@ def main(self, *, args):
11561164 filtered_args = get_filtered_args (args , list (fields (CreateVerbArgs )))
11571165 filtered_args ["ws_abs_path" ] = os .path .normpath (os .path .abspath (args .ws_folder ))
11581166 filtered_args ["ws_name" ] = ws_name
1167+
1168+ # Process env_vars
1169+ env_vars_dict = {}
1170+ if args .env_vars :
1171+ for env_var in args .env_vars :
1172+ if "=" not in env_var :
1173+ logger .warning (
1174+ f"Skipping invalid environment variable format: '{ env_var } '. Expected format KEY=VALUE"
1175+ )
1176+ continue
1177+ key , value = env_var .split ("=" , 1 )
1178+ env_vars_dict [key ] = value
1179+ filtered_args ["env_vars" ] = env_vars_dict
1180+
11591181 create_args = CreateVerbArgs (** filtered_args )
11601182 logger .info ("### CREATE ARGS ###" )
11611183 rich .print (create_args )
@@ -1292,6 +1314,7 @@ def main(self, *, args):
12921314 base_ws = create_args .upstream_ws_name if create_args .has_upstream_ws else "" ,
12931315 docker_container_name = create_args .container_name if create_args .docker else "" ,
12941316 standalone = create_args .standalone ,
1317+ env_vars = create_args .env_vars ,
12951318 )
12961319 if not update_workspaces_config (WORKSPACES_PATH , local_main_ws ):
12971320 raise RuntimeError ("Failed to update workspaces config with main workspace." )
0 commit comments