File size: 2,360 Bytes
fed1528
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env node
/**
 * Fresh-machine bootstrap for EVE ECC (Windows-friendly).
 * Run from repo root: npm run setup
 */
import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { spawnSync } from "node:child_process";

const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const isWin = process.platform === "win32";

function log(msg) {
  console.log(`▸ ${msg}`);
}

function run(cmd, args, cwd = root) {
  log(`${cmd} ${args.join(" ")}`);
  const r = spawnSync(cmd, args, {
    cwd,
    stdio: "inherit",
    shell: isWin,
    env: process.env,
  });
  if (r.status !== 0) {
    process.exit(r.status ?? 1);
  }
}

log("EVE ECC setup — Instant Presence monorepo");
log(`root: ${root}`);
log(`node: ${process.version}`);

const envPath = join(root, ".env");
const envExample = join(root, ".env.example");
if (!existsSync(envPath) && existsSync(envExample)) {
  copyFileSync(envExample, envPath);
  log("created .env from .env.example");
} else {
  log(".env ready");
}

// Ensure workspace package folders exist for npm workspaces
for (const dir of ["services/ace-controller", "infra", "apps/web/public/staff"]) {
  mkdirSync(join(root, dir), { recursive: true });
}

run(isWin ? "npm.cmd" : "npm", ["install"]);

// Python controller deps (optional if python missing)
const py = spawnSync(isWin ? "py" : "python3", ["--version"], { shell: isWin });
const pyCmd = py.status === 0 ? (isWin ? "py" : "python3") : isWin ? "python" : "python3";
const pyCheck = spawnSync(pyCmd, ["--version"], { shell: isWin, encoding: "utf8" });
if (pyCheck.status === 0) {
  log(`python: ${(pyCheck.stdout || pyCheck.stderr || "").trim()}`);
  const req = join(root, "services/ace-controller/requirements.txt");
  if (existsSync(req)) {
    run(pyCmd, ["-m", "pip", "install", "-r", "requirements.txt"], join(root, "services/ace-controller"));
  }
} else {
  log("python not found — skip ace-controller deps (web IDE still works)");
}

const marker = join(root, ".eve-ecc-setup-ok");
writeFileSync(
  marker,
  `ok ${new Date().toISOString()}\nnode ${process.version}\n`,
  "utf8",
);

log("setup complete");
log("next:  npm run dev          → IDE  http://127.0.0.1:5173");
log("       npm run controller   → ACE  http://127.0.0.1:8100");