From e41bf67f73e03e25eececf410afd07a233a170ae Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 7 Dec 2024 08:05:57 -0800 Subject: [PATCH] feat: add --set-env flag to set environment variables from command line --- aider/args.py | 7 +++++++ aider/main.py | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/aider/args.py b/aider/args.py index c4b9af2ce..7bbd4a945 100644 --- a/aider/args.py +++ b/aider/args.py @@ -772,6 +772,13 @@ def get_parser(default_config_files, git_root): "--editor", help="Specify which editor to use for the /editor command", ) + group.add_argument( + "--set-env", + action="append", + metavar="ENV_VAR_NAME=value", + help="Set an environment variable (can be used multiple times)", + default=[], + ) ########## group = parser.add_argument_group("Voice Settings") diff --git a/aider/main.py b/aider/main.py index b5a8fa1eb..782b34acd 100644 --- a/aider/main.py +++ b/aider/main.py @@ -454,6 +454,17 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F # Load the .env file specified in the arguments loaded_dotenvs = load_dotenv_files(git_root, args.env_file, args.encoding) + # Process any environment variables set via --set-env + if args.set_env: + for env_setting in args.set_env: + try: + name, value = env_setting.split('=', 1) + os.environ[name.strip()] = value.strip() + except ValueError: + io.tool_error(f"Invalid --set-env format: {env_setting}") + io.tool_output("Format should be: ENV_VAR_NAME=value") + return 1 + # Parse again to include any arguments that might have been defined in .env args = parser.parse_args(argv)