hypertwist/website/scripts/render-same-origin-bundle.mjs
2026-06-22 07:09:46 +00:00

75 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
import path from 'node:path'
import {
loadBundleManifest,
renderSameOriginBundle,
writeSameOriginBundle,
} from './render-same-origin-bundle-lib.mjs'
function parseArgs(argv) {
const options = {
manifest: '',
outDir: '',
stdout: false,
summary: false,
}
for (let index = 0; index < argv.length; index += 1) {
const argument = argv[index]
const next = argv[index + 1] || ''
switch (argument) {
case '--manifest':
options.manifest = next
index += 1
break
case '--out-dir':
options.outDir = next
index += 1
break
case '--stdout':
options.stdout = true
break
case '--summary':
options.summary = true
break
default:
break
}
}
return options
}
const args = parseArgs(process.argv.slice(2))
const manifestPath = args.manifest || path.resolve(process.cwd(), 'deploy', 'hypertwist.same-origin.bundle.example.json')
const { path: loadedManifestPath, manifest } = loadBundleManifest(manifestPath)
let renderedResult = null
if (args.outDir) {
renderedResult = writeSameOriginBundle({
manifest,
outDir: args.outDir,
})
} else {
renderedResult = renderSameOriginBundle(manifest)
}
if (args.summary && renderedResult) {
process.stdout.write(`${JSON.stringify({
manifestPath: loadedManifestPath,
outputDir: renderedResult.outputDir || null,
validationReport: renderedResult.validationReport,
}, null, 2)}\n`)
} else if (args.stdout || !args.outDir) {
process.stdout.write('### website.env\n')
process.stdout.write(renderedResult.frontendEnvContent)
process.stdout.write('\n### server.env\n')
process.stdout.write(renderedResult.serverEnvContent)
process.stdout.write('\n### systemd\n')
process.stdout.write(renderedResult.systemdContent)
process.stdout.write('\n### nginx\n')
process.stdout.write(renderedResult.nginxContent)
}