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-one.js "); 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");