export async function writeConfigFile()

in src/core/utils/cli-config.ts [183:232]


export async function writeConfigFile(configFilePath: string, configName: string, config: SWACLIConfig) {
  let configFile: SWACLIConfigFile = {
    // TODO: find node_modules/ path and use local schema if found
    $schema: swaCliConfigSchemaUrl,
    configurations: {},
  };

  if (swaCliConfigFileExists(configFilePath)) {
    logger.silly(`Loading existing swa-cli.config.json file at ${configFilePath}`);

    try {
      const configJson = await readFile(configFilePath, "utf-8");
      configFile = JSON.parse(configJson) as SWACLIConfigFile;
    } catch (error) {
      logger.error(`Error parsing ${configFilePath}`);
      if (error instanceof Error) {
        logger.error(error);
      }
      logger.error("Cannot update existing configuration file.");
      logger.error("Please fix or delete your swa-cli.config.json file and try again.");
      return;
    }
  }

  if (typeof configFile !== "object" || configFile.constructor !== Object) {
    logger.error(`Error parsing ${configFilePath}`);
    logger.error("Invalid configuration content found.");
    logger.error("Please fix or delete your swa-cli.config.json file and try again.");
    return;
  }

  if (configFile.configurations === undefined) {
    logger.silly(`Creating "configurations" property in swa-cli.config.json file at ${configFilePath}`);
    configFile.configurations = {};
  }

  configFile.configurations[configName] = config;

  try {
    logger.silly(`Writing configuration "${configName}" to swa-cli.config.json`);
    logger.silly(config);

    await writeFile(configFilePath, JSON.stringify(configFile, null, 2));
  } catch (error) {
    logger.error(`Error writing configuration to ${configFilePath}`);
    if (error instanceof Error) {
      logger.error(error);
    }
  }
}