81 lines
2 KiB
JavaScript
81 lines
2 KiB
JavaScript
import fs from "fs";
|
|
import path from "path";
|
|
import { stripBOM } from "./utils/fs-utils.js";
|
|
|
|
const [ , , clientName, appName, variantName ] = process.argv;
|
|
|
|
if (!clientName || !appName || !variantName) {
|
|
console.error("❌ Usage: node deploy.js <client> <application> <variant>");
|
|
process.exit(1);
|
|
}
|
|
|
|
const ROOT = process.cwd();
|
|
|
|
const CONFIG_FILE = path.join(
|
|
ROOT,
|
|
"4-clients",
|
|
clientName,
|
|
"client.config.json"
|
|
);
|
|
|
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
console.error(`❌ Config not found: ${CONFIG_FILE}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const rawConfig = fs.readFileSync(CONFIG_FILE, "utf8");
|
|
const config = JSON.parse(stripBOM(rawConfig));
|
|
|
|
const app = config.applications.find(a => a.name === appName);
|
|
|
|
if (!app) {
|
|
console.error(`❌ Application "${appName}" not found for client "${clientName}"`);
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!app.variants.includes(variantName)) {
|
|
console.error(
|
|
`❌ Variant "${variantName}" not defined for application "${appName}"`
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const DIST_DIR = path.join(
|
|
ROOT,
|
|
"dist",
|
|
clientName,
|
|
variantName
|
|
);
|
|
|
|
if (!fs.existsSync(DIST_DIR)) {
|
|
console.error(`❌ Build output not found: ${DIST_DIR}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const TARGET_DIR = path.join(
|
|
ROOT,
|
|
config.csharpRoot,
|
|
app.deployPath,
|
|
"wwwroot",
|
|
"themes",
|
|
variantName
|
|
);
|
|
|
|
console.log("📤 Deploy");
|
|
console.log(` Client : ${clientName}`);
|
|
console.log(` Application : ${appName}`);
|
|
console.log(` Variant : ${variantName}`);
|
|
console.log(` From : ${DIST_DIR}`);
|
|
console.log(` To : ${TARGET_DIR}`);
|
|
|
|
fs.mkdirSync(TARGET_DIR, { recursive: true });
|
|
|
|
for (const file of fs.readdirSync(DIST_DIR)) {
|
|
const src = path.join(DIST_DIR, file);
|
|
const dest = path.join(TARGET_DIR, file);
|
|
|
|
fs.copyFileSync(src, dest);
|
|
console.log(` ✔ ${file}`);
|
|
}
|
|
|
|
console.log("✅ Deploy finished");
|