function load(envName) {
  const base = require("./config/base.json");
  const env = loadConfig(envName);
  const local = loadConfig("local");

  return {
    ...base,
    ...env,
    ...local,
    dev: {
      ...base.dev,
      ...env.dev,
      ...local.dev,
    },
    flags: {
      ...base.flags,
      ...env.flags,
      ...local.flags,
    },
    devFlags: {
      ...base.devFlags,
      ...env.devFlags,
      ...local.devFlags,
    },
  };
}

function log(configObj) {
  const repeatNum = 50;
  console.log(`${"=".repeat(repeatNum)}\nenvConfig`);
  console.log(JSON.stringify(configObj, null, 2));
  console.log(`${"=".repeat(repeatNum)}`);
}

function loadConfig(configName) {
  try {
    return require(`./config/${configName}.json`);
  } catch (e) {
    if (e instanceof Error && e.code === "MODULE_NOT_FOUND") {
      return {};
    } else {
      throw e;
    }
  }
}

module.exports = {
  load,
  log,
};
