41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
"""Run the LexGo backend with local environment settings without exposing secrets."""
|
|
from pathlib import Path
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def main():
|
|
commands = {
|
|
"migrate": ["go", "run", "./cmd/lexgo", "migrate"],
|
|
"bootstrap": ["go", "run", "./cmd/lexgo", "bootstrap"],
|
|
"serve": ["go", "run", "./cmd/lexgo", "serve"],
|
|
"audit-cleanup": ["go", "run", "./cmd/lexgo", "audit-cleanup"],
|
|
"build": ["go", "build", "./cmd/lexgo"],
|
|
"test": ["go", "test", "./...", "-count=1"],
|
|
"test-integration": ["go", "test", "./...", "-count=1", "-v"],
|
|
}
|
|
if len(sys.argv) != 2 or sys.argv[1] not in commands:
|
|
raise SystemExit("Usage: python scripts/server.py migrate|bootstrap|serve|audit-cleanup|build|test|test-integration")
|
|
env = dict(os.environ)
|
|
config = ROOT / ".env.local"
|
|
if config.exists():
|
|
for line in config.read_text(encoding="utf-8").splitlines():
|
|
if line.strip() and not line.lstrip().startswith("#") and "=" in line:
|
|
key, value = line.split("=", 1)
|
|
if key.startswith("LEXGO_"):
|
|
env.setdefault(key.strip(), value.strip())
|
|
env["GOTOOLCHAIN"] = "go1.26.5"
|
|
env["GOSUMDB"] = "sum.golang.org"
|
|
env["GIN_MODE"] = "release"
|
|
if sys.argv[1] == "test-integration":
|
|
env.setdefault("LEXGO_TEST_DB_NAME", "lexgo_test_issue2")
|
|
# Tests only use an explicitly supplied dedicated DSN; the Go tests enforce its prefix.
|
|
return subprocess.call(commands[sys.argv[1]], cwd=str(ROOT / "server"), env=env)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|