diff --git a/doc/changelog.d/3817.miscellaneous.md b/doc/changelog.d/3817.miscellaneous.md new file mode 100644 index 00000000000..be3b3a14b28 --- /dev/null +++ b/doc/changelog.d/3817.miscellaneous.md @@ -0,0 +1 @@ +feat: inject additional MAPDL command line arguments through an env var \ No newline at end of file diff --git a/src/ansys/mapdl/core/launcher.py b/src/ansys/mapdl/core/launcher.py index aa63a70e446..340c7cfae70 100644 --- a/src/ansys/mapdl/core/launcher.py +++ b/src/ansys/mapdl/core/launcher.py @@ -1437,6 +1437,12 @@ def launch_mapdl( cleanup_on_exit=args["cleanup_on_exit"], version=args["version"] ) + ######################################## + # Additional switches injection + # ----------------------------- + # + args = inject_additional_switches(args) + ######################################## # SLURM settings # -------------- @@ -2893,3 +2899,31 @@ def check_console_start_parameters(start_parm): start_parm.pop(each) return start_parm + + +def inject_additional_switches(args: dict[str, Any]) -> dict[str, Any]: + """Inject additional switches to the command line + + Parameters + ---------- + args : Dict[str, Any] + Arguments dictionary + + Returns + ------- + Dict[str, Any] + Arguments dictionary with the additional switches injected + """ + envvaras = os.environ.get("PYMAPDL_ADDITIONAL_SWITCHES") + + if envvaras: + if args.get("additional_switches"): + args["additional_switches"] += f" {envvaras}" + else: + args["additional_switches"] = envvaras + + LOG.debug( + f"Injecting additional switches from 'PYMAPDL_ADDITIONAL_SWITCHES' env var: {envvaras}" + ) + + return args diff --git a/tests/test_launcher.py b/tests/test_launcher.py index 8008560fa85..9558866c971 100644 --- a/tests/test_launcher.py +++ b/tests/test_launcher.py @@ -61,6 +61,7 @@ get_slurm_options, get_start_instance, get_version, + inject_additional_switches, is_running_on_slurm, kill_job, launch_grpc, @@ -2079,3 +2080,16 @@ def test_create_queue_for_std_no_queue(): from ansys.mapdl.core.launcher import _create_queue_for_std assert _create_queue_for_std(None) == (None, None) + + +def test_inject_additional_switches(monkeypatch): + """ + Test the inject_additional_switches function. + """ + envvar = "-my-add=switch --other_switch -b" + monkeypatch.setenv("PYMAPDL_ADDITIONAL_SWITCHES", envvar) + args = {"additional_switches": "-my_add=switch --other_switch -b"} + + new_args = inject_additional_switches(args) + assert args["additional_switches"] in new_args["additional_switches"] + assert envvar in new_args["additional_switches"]