widgettdc-api / scripts /sync_env_prod_to_hf.py
Kraft102's picture
fix: sql.js Docker/Alpine compatibility layer for PatternMemory and FailureMemory
5a81b95
import os
from huggingface_hub import HfApi
import sys
# Configuration
HF_TOKEN = os.environ.get("HF_TOKEN")
SPACE_NAME = "Kraft102/widgetdc-cortex"
# Update to verify .env.production
ENV_FILE = ".env.production"
def parse_env_file(filepath):
"""Parse .env file manually to avoid dependencies"""
env_vars = {}
try:
if not os.path.exists(filepath):
return None
with open(filepath, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line or line.startswith('#'):
continue
if '=' in line:
key, value = line.split('=', 1)
key = key.strip()
value = value.strip()
if (value.startswith('"') and value.endswith('"')) or \
(value.startswith("'") and value.endswith("'")):
value = value[1:-1]
env_vars[key] = value
except Exception as e:
print(f"Error reading {filepath}: {e}")
return None
return env_vars
def main():
print(f"🔍 Checking {ENV_FILE} for production secrets...")
env_vars = parse_env_file(ENV_FILE)
if not env_vars:
print(f"⚠️ {ENV_FILE} not found or empty. Falling back to .env checking...")
env_vars = parse_env_file(".env")
if not env_vars:
print("❌ No .env files found!")
sys.exit(1)
# Check for localhost
localhost_keys = [k for k, v in env_vars.items() if 'localhost' in v or '127.0.0.1' in v]
if localhost_keys:
print(f"⚠️ WARNING: Found localhost values in {ENV_FILE}:")
for k in localhost_keys:
print(f" - {k}")
print(" These will NOT work in Hugging Face Spaces!")
# We will still upload because the user asked us to "gennemfær dette" (execute this)
# But we will verify API keys at least.
print(f"🚀 Uploading {len(env_vars)} secrets to {SPACE_NAME}...")
try:
api = HfApi(token=HF_TOKEN)
for key, value in env_vars.items():
api.add_space_secret(repo_id=SPACE_NAME, key=key, value=value, token=HF_TOKEN)
print(f" ✅ Uploaded {key}")
except Exception as e:
print(f"❌ Upload failed: {e}")
if __name__ == "__main__":
main()