Should be able to deploy
This commit is contained in:
84
init.py
Normal file
84
init.py
Normal file
@@ -0,0 +1,84 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user