127 lines
3 KiB
JavaScript
127 lines
3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import path from 'node:path'
|
|
|
|
import {
|
|
renderNginxConfig,
|
|
renderSystemdService,
|
|
writeRenderedDeploymentFiles,
|
|
} from './render-same-origin-deployment-lib.mjs'
|
|
|
|
function parseArgs(argv) {
|
|
const options = {
|
|
checkoutRoot: '',
|
|
websiteRoot: '',
|
|
serverRoot: '',
|
|
environmentFile: '',
|
|
serviceUser: 'hypertwist',
|
|
serviceGroup: '',
|
|
nodeEnv: 'production',
|
|
serverNames: '',
|
|
certificateName: '',
|
|
upstreamPort: '3011',
|
|
upstreamName: 'hypertwist_website_auth_server',
|
|
systemdOut: '',
|
|
nginxOut: '',
|
|
stdout: false,
|
|
}
|
|
|
|
for (let index = 0; index < argv.length; index += 1) {
|
|
const argument = argv[index]
|
|
const next = argv[index + 1] || ''
|
|
|
|
switch (argument) {
|
|
case '--checkout-root':
|
|
options.checkoutRoot = next
|
|
index += 1
|
|
break
|
|
case '--website-root':
|
|
options.websiteRoot = next
|
|
index += 1
|
|
break
|
|
case '--server-root':
|
|
options.serverRoot = next
|
|
index += 1
|
|
break
|
|
case '--environment-file':
|
|
options.environmentFile = next
|
|
index += 1
|
|
break
|
|
case '--service-user':
|
|
options.serviceUser = next
|
|
index += 1
|
|
break
|
|
case '--service-group':
|
|
options.serviceGroup = next
|
|
index += 1
|
|
break
|
|
case '--node-env':
|
|
options.nodeEnv = next
|
|
index += 1
|
|
break
|
|
case '--server-names':
|
|
options.serverNames = next
|
|
index += 1
|
|
break
|
|
case '--certificate-name':
|
|
options.certificateName = next
|
|
index += 1
|
|
break
|
|
case '--upstream-port':
|
|
options.upstreamPort = next
|
|
index += 1
|
|
break
|
|
case '--upstream-name':
|
|
options.upstreamName = next
|
|
index += 1
|
|
break
|
|
case '--systemd-out':
|
|
options.systemdOut = next
|
|
index += 1
|
|
break
|
|
case '--nginx-out':
|
|
options.nginxOut = next
|
|
index += 1
|
|
break
|
|
case '--stdout':
|
|
options.stdout = true
|
|
break
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
|
|
return options
|
|
}
|
|
|
|
const args = parseArgs(process.argv.slice(2))
|
|
const checkoutRoot = args.checkoutRoot || path.resolve(process.cwd(), '..')
|
|
|
|
const baseOptions = {
|
|
checkoutRoot,
|
|
websiteRoot: args.websiteRoot,
|
|
serverRoot: args.serverRoot,
|
|
environmentFile: args.environmentFile,
|
|
serviceUser: args.serviceUser,
|
|
serviceGroup: args.serviceGroup,
|
|
nodeEnv: args.nodeEnv,
|
|
serverNames: args.serverNames ? args.serverNames.split(',') : undefined,
|
|
certificateName: args.certificateName,
|
|
upstreamPort: args.upstreamPort,
|
|
upstreamName: args.upstreamName,
|
|
}
|
|
|
|
if (args.systemdOut || args.nginxOut) {
|
|
writeRenderedDeploymentFiles({
|
|
...baseOptions,
|
|
systemdOut: args.systemdOut,
|
|
nginxOut: args.nginxOut,
|
|
})
|
|
}
|
|
|
|
if (args.stdout || (!args.systemdOut && !args.nginxOut)) {
|
|
process.stdout.write('### systemd\n')
|
|
process.stdout.write(renderSystemdService(baseOptions))
|
|
process.stdout.write('\n### nginx\n')
|
|
process.stdout.write(renderNginxConfig(baseOptions))
|
|
}
|