text: ﻿// 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}`
      );
    }
  }
  