merge: chore/cleanup-remove-bloat-and-secrets into main

This commit is contained in:
Crypto Rug Munch 2026-07-02 01:24:22 +07:00
commit bde2f3a97d
1173 changed files with 437609 additions and 0 deletions

133
generate_env.py Executable file
View file

@ -0,0 +1,133 @@
#!/usr/bin/env python3
"""
RMI Backend Environment Generator
====================================
Generates /root/backend/.env from .env.example + Hermes .env matching keys.
Also syncs from /root/.secrets/ where available.
Usage:
python3 generate_env.py # Generate .env, show diff
python3 generate_env.py --force # Overwrite existing .env
"""
import sys
from pathlib import Path
BACKEND_DIR = Path("/root/backend")
HERMES_ENV = Path("/root/.hermes/.env")
SECRETS_DIR = Path("/root/.secrets")
EXAMPLE = BACKEND_DIR / ".env.example"
TARGET = BACKEND_DIR / ".env"
# Known key mappings between Hermes .env and backend .env
KEY_MAP = {
# Hermes key -> Backend key (or same if one name)
"TELEGRAM_BOT_TOKEN": "BOT_TOKEN",
}
def load_env_file(path: Path) -> dict:
"""Parse a .env file into a dict, handling basic quoting."""
env = {}
if not path.exists():
return env
for line in path.read_text().splitlines():
line = line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, _, val = line.partition("=")
key = key.strip()
val = val.strip().strip('"').strip("'")
if val:
env[key] = val
return env
def get_secret(name: str) -> str:
"""Read a secret from /root/.secrets/"""
path = SECRETS_DIR / name
if path.exists():
return path.read_text().strip()
# Try with _api_key suffix
path = SECRETS_DIR / f"{name}_api_key"
if path.exists():
return path.read_text().strip()
return ""
def generate():
hermes_env = load_env_file(HERMES_ENV)
secrets_found = []
# Read example template
if not EXAMPLE.exists():
print(f"ERROR: {EXAMPLE} not found")
sys.exit(1)
lines = EXAMPLE.read_text().splitlines()
output = []
filled = 0
missing = 0
for line in lines:
if "=" not in line or line.strip().startswith("#"):
output.append(line)
continue
key = line.split("=")[0].strip()
val = ""
# Check Hermes env first
if hermes_env.get(key):
val = hermes_env[key]
elif key in KEY_MAP and KEY_MAP[key] in hermes_env:
val = hermes_env[KEY_MAP[key]]
# Check secrets
if not val:
secret_val = get_secret(key.lower())
if secret_val:
val = secret_val
secrets_found.append(key)
if val:
output.append(f"{key}={val}")
filled += 1
else:
output.append(line)
missing += 1
content = "\n".join(output) + "\n"
# Show what we found
print(f"\n{'=' * 60}")
print("Generated .env from:")
print(f" Hermes .env: {len(hermes_env)} keys loaded")
print(f" Secrets dir: {len(secrets_found)} found ({', '.join(secrets_found) if secrets_found else 'none'})")
print(f" Result: {filled} filled, {missing} still empty")
print(f"{'=' * 60}\n")
if missing > 0:
print(f"⚠️ {missing} variables still need values. Check {TARGET}")
# Write
if TARGET.exists() and "--force" not in sys.argv:
print(f"\n{TARGET} already exists. Use --force to overwrite.")
print("Showing diff instead:\n")
existing = TARGET.read_text()
import difflib
diff = difflib.unified_diff(
existing.splitlines(keepends=True),
content.splitlines(keepends=True),
fromfile=str(TARGET),
tofile="generated",
)
sys.stdout.writelines(diff)
else:
TARGET.write_text(content)
print(f"✅ Written {TARGET}")
if __name__ == "__main__":
generate()