import fs from "fs";
import * as api from "./api";
import {
  getConfig,
  paths,
  railwayPath,
  railwayProductionToken,
} from "./config";
import { Envs } from "./types";

export const getEnvs = async (): Promise<Envs> => {
  const config = getConfig();

  if (railwayProductionToken == null && config.project == null) {
    throw new Error("`project` required in .railway/config.json");
  }

  if (railwayProductionToken == null && config.environment == null) {
    throw new Error("`environment` required in .railway/config.json");
  }

  return api.getProjectEnv(config.project, config.environment);
};

export const saveEnvToFile = async () => {
  const envs = await getEnvs();

  if (!fs.existsSync(railwayPath)) {
    fs.mkdirSync(railwayPath);
  }

  fs.writeFileSync(
    paths.railwayEnvFilePath,
    JSON.stringify(envs, null, 2),
    "utf8",
  );

  fs.writeFileSync(
    paths.nodeEnvFilePath,
    JSON.stringify(envs, null, 2),
    "utf8",
  );
};
