Download utils/update_env.py from Zhitomir/chat: direct link, hf CLI and curl.
- Browser
- Download file 3.49 kB
-
https://huggingface.co/spaces/Zhitomir/chat/resolve/main/utils/update_env.py
- Command line
-
hf download hf://spaces/Zhitomir/chat/utils/update_env.py
-
curl -L -o update_env.py https://huggingface.co/spaces/Zhitomir/chat/resolve/main/utils/update_env.py
3.49 kB
| import os | |
| import re | |
| import argparse | |
| import sys | |
| """ | |
| This script updates environment variables in a .env file with values from the local environment. | |
| Specifically, it looks for variables set to "GET_FROM_LOCAL_ENV" in the input .env file and replaces them | |
| with the corresponding values from the local environment variables. | |
| Usage: | |
| 1. Prepare an input .env file with some variables set to "GET_FROM_LOCAL_ENV". | |
| Example input .env file (input.env): | |
| # Example configuration | |
| API_KEY=GET_FROM_LOCAL_ENV | |
| DB_PASSWORD=GET_FROM_LOCAL_ENV | |
| HOST=localhost | |
| PORT=3080 | |
| 2. Set the corresponding environment variables in your local environment. | |
| Example in bash: | |
| export API_KEY=new_api_key_value | |
| export DB_PASSWORD=new_db_password_value | |
| 3. Run the script, specifying the input and output file paths. | |
| Example: | |
| python update_env.py input.env output.env | |
| """ | |
| def read_env_file(file_path): | |
| """Reads the .env file and returns the lines as a list.""" | |
| with open(file_path, 'r') as file: | |
| lines = file.readlines() | |
| return lines | |
| def write_env_file(file_path, lines): | |
| """Writes the updated lines to the specified .env file.""" | |
| with open(file_path, 'w') as file: | |
| file.writelines(lines) | |
| def update_env_file_with_local_env(input_file_path, output_file_path): | |
| """ | |
| Reads the input .env file, updates the variables set to GET_FROM_LOCAL_ENV | |
| with values from the local environment, and writes the result to the output .env file. | |
| """ | |
| lines = read_env_file(input_file_path) | |
| updated_lines = [] | |
| # Regex pattern to match lines ending with "GET_FROM_LOCAL_ENV" | |
| env_var_pattern = re.compile(r'^\s*([A-Z_]+)=GET_FROM_LOCAL_ENV\s*$') | |
| missing_vars = [] | |
| updated_vars = [] | |
| for line in lines: | |
| match = env_var_pattern.match(line) | |
| if match: | |
| key = match.group(1) | |
| # Check if the environment variable is set in the local environment | |
| if key in os.environ: | |
| new_value = os.environ[key] | |
| updated_line = f'{key}={new_value}\n' | |
| updated_lines.append(updated_line) | |
| updated_vars.append(key) | |
| else: | |
| missing_vars.append(key) | |
| else: | |
| updated_lines.append(line) | |
| # Print warnings and exit if any required environment variables are missing | |
| if missing_vars: | |
| for var in missing_vars: | |
| print(f"Warning: {var} set to GET_FROM_LOCAL_ENV, could not find {var}, please set {var} in your local environment and run again.") | |
| sys.exit(1) | |
| # Write the updated lines to the output .env file | |
| write_env_file(output_file_path, updated_lines) | |
| # Print the list of updated variables | |
| if updated_vars: | |
| print("Updated the following variables:") | |
| for var in updated_vars: | |
| print(var) | |
| print(f"Processed {input_file_path} and wrote updates to {output_file_path}.") | |
| if __name__ == "__main__": | |
| # Parse command-line arguments for input and output file paths | |
| parser = argparse.ArgumentParser(description='Update .env file with local environment variables.') | |
| parser.add_argument('input_file_path', type=str, help='Path to the input .env file') | |
| parser.add_argument('output_file_path', type=str, help='Path to the output .env file') | |
| args = parser.parse_args() | |
| # Update the .env file with local environment variables | |
| update_env_file_with_local_env(args.input_file_path, args.output_file_path) | |