56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
// This script configures the .env.development.local file with additional environment variables to configure HTTPS using the ASP.NET Core
|
|
// development certificate in the webpack development proxy.
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const baseFolder =
|
|
process.env.APPDATA !== undefined && process.env.APPDATA !== ''
|
|
? `${process.env.APPDATA}/ASP.NET/https`
|
|
: `${process.env.HOME}/.aspnet/https`;
|
|
|
|
const certificateArg = process.argv.map(arg => arg.match(/--name=(?<value>.+)/i)).filter(Boolean)[0];
|
|
const certificateName = certificateArg ? certificateArg.groups.value : process.env.npm_package_name;
|
|
|
|
if (!certificateName) {
|
|
console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<<app>> explicitly.')
|
|
process.exit(-1);
|
|
}
|
|
|
|
const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
|
|
const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
|
|
|
|
if (!fs.existsSync('.env.development.local')) {
|
|
fs.writeFileSync(
|
|
'.env.development.local',
|
|
`SSL_CRT_FILE=${certFilePath}
|
|
SSL_KEY_FILE=${keyFilePath}`
|
|
);
|
|
} else {
|
|
let lines = fs.readFileSync('.env.development.local')
|
|
.toString()
|
|
.split('\n');
|
|
|
|
let hasCert, hasCertKey = false;
|
|
for (const line of lines) {
|
|
if (/SSL_CRT_FILE=.*/i.test(line)) {
|
|
hasCert = true;
|
|
}
|
|
if (/SSL_KEY_FILE=.*/i.test(line)) {
|
|
hasCertKey = true;
|
|
}
|
|
}
|
|
if (!hasCert) {
|
|
fs.appendFileSync(
|
|
'.env.development.local',
|
|
`\nSSL_CRT_FILE=${certFilePath}`
|
|
);
|
|
}
|
|
if (!hasCertKey) {
|
|
fs.appendFileSync(
|
|
'.env.development.local',
|
|
`\nSSL_KEY_FILE=${keyFilePath}`
|
|
);
|
|
}
|
|
}
|