engresearch's picture
Upload folder using huggingface_hub
7f88bdf verified
import { spawn } from "node:child_process";
import fs from "node:fs";
import path from "node:path";
const repoRoot = process.cwd();
const envLocalPath = path.join(repoRoot, ".env.local");
function loadEnv(filePath) {
if (!fs.existsSync(filePath)) {
return {};
}
const env = {};
const lines = fs.readFileSync(filePath, "utf8").split(/\r?\n/);
for (const raw of lines) {
const line = raw.trim();
if (!line || line.startsWith("#")) {
continue;
}
const idx = line.indexOf("=");
if (idx < 0) {
continue;
}
const key = line.slice(0, idx).trim();
const value = line.slice(idx + 1);
env[key] = value;
}
return env;
}
function normalizeDatabaseUrl(env) {
const current = env.DATABASE_URL;
if (!current) {
return env;
}
let normalized = current.trim();
if (
(normalized.startsWith('"') && normalized.endsWith('"')) ||
(normalized.startsWith("'") && normalized.endsWith("'"))
) {
normalized = normalized.slice(1, -1);
}
if (normalized.startsWith(":postgresql://")) {
normalized = normalized.slice(1);
}
normalized = normalized.replace(
/(postgres(?:ql)?:\/\/[^:/?#]+:)\[([^\]]+)\](@)/i,
"$1$2$3"
);
return {
...env,
DATABASE_URL: normalized
};
}
const localEnv = loadEnv(envLocalPath);
const normalizedLocalEnv = normalizeDatabaseUrl(localEnv);
const pythonExe =
process.env.PYTHON_EXE ||
normalizedLocalEnv.PYTHON_EXE ||
"C:\\Users\\Angelah\\AppData\\Local\\Programs\\Python\\Python311\\python.exe";
const mergedEnv = normalizeDatabaseUrl({
...normalizedLocalEnv,
...process.env
});
const child = spawn(pythonExe, ["apps/worker/src/worker/main.py"], {
cwd: repoRoot,
env: mergedEnv,
stdio: "inherit"
});
child.on("exit", (code, signal) => {
if (signal) {
process.kill(process.pid, signal);
return;
}
process.exit(code ?? 0);
});
child.on("error", (error) => {
console.error(`Failed to start worker: ${error.message}`);
process.exit(1);
});