Files
latosa-escrima/init.py
2025-01-18 21:13:03 +01:00

85 lines
2.6 KiB
Python

import re
import os
# Define template and output file paths
TEMPLATE_FILE = ".env.template"
OUTPUT_FILE = ".env"
def load_template(template_path):
"""
Load the .env.template file.
"""
if not os.path.exists(template_path):
raise FileNotFoundError(f"Template file '{template_path}' not found.")
with open(template_path, 'r') as file:
return file.readlines()
def parse_variable(line):
"""
Extract the variable name and default value from a template line.
"""
match = re.match(r"(.*?)\$\{([^}]+)\}(.*)", line)
if match:
prefix, var_value, suffix = match.groups()
# Extract variable name and default value (if any)
var_name, default_value = (var_value.split(":-") + [""])[:2]
return prefix, var_name, default_value, suffix
return None, None, None, None
def prompt_variable(var_name, default_value):
"""
Prompt the user to input a value for the variable, using a default if no input is provided.
"""
user_input = input(f"Enter value for {var_name} [default: {default_value}]: ").strip()
return user_input if user_input else default_value
def generate_env(template_lines):
"""
Generate the .env file content by substituting variables from the template.
"""
output_lines = ["# Generated .env file\n"]
for line in template_lines:
# Skip comments and empty lines
if line.strip().startswith("#") or not line.strip():
output_lines.append(line)
continue
# Parse and process variables
prefix, var_name, default_value, suffix = parse_variable(line)
if var_name:
# Get the default value from the template (already handled in the parsing)
value = prompt_variable(var_name, default_value)
output_lines.append(f"{prefix}{value}{suffix}\n")
else:
# Unprocessed line (e.g., no variables)
output_lines.append(line)
return output_lines
def write_env(output_path, lines):
"""
Write the generated .env file content to the output file.
"""
with open(output_path, 'w') as file:
file.writelines(lines)
print(f".env file has been successfully created at '{output_path}'.")
def main():
try:
# Load the template file
template_lines = load_template(TEMPLATE_FILE)
# Generate the .env content
output_lines = generate_env(template_lines)
# Write the content to the .env file
write_env(OUTPUT_FILE, output_lines)
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
main()