infisical-autoenv/configurator.js

53 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2023-11-05 11:50:53 -07:00
import os from "node:os";
import fs from "node:fs";
import rls from "readline-sync";
const configFilePath = `${os.homedir()}/.infisical-env.config.json`;
const configTemplate = {
2023-11-05 17:41:45 -07:00
projects: [
{
name: "proj1",
environments: [
{
slug: "prod",
envar: "INFISICAL_PROJ1_PROD_READ_TOKEN",
paths: ["/", "/database"],
},
],
},
],
storeTokens: false,
infisicalInstance: "https://app.infisical.com",
};
2023-11-05 11:50:53 -07:00
2023-11-05 17:41:45 -07:00
export function loadConfig() {
return JSON.parse(fs.readFileSync(configFilePath));
2023-11-05 11:50:53 -07:00
}
2023-11-05 17:41:45 -07:00
export function upsertConfig() {
if (fs.existsSync(configFilePath)) return;
generateConfig();
2023-11-05 11:50:53 -07:00
}
2023-11-05 17:41:45 -07:00
export function writeConfig(overrides) {
const config = { ...configTemplate, ...overrides };
fs.writeFileSync(configFilePath, JSON.stringify(config));
2023-11-05 11:50:53 -07:00
}
2023-11-05 17:41:45 -07:00
export function generateConfig() {
const url = rls.question("Infisical Instance: ");
const store = rls.keyInYNStrict("Store Tokens? (Will Be Unencrypted)");
const projectOptions = ["Add Project", "Exit"];
const envOptions = ["Add Environment", "Exit"];
const pathOptions = ["Add Path", "Exit"];
var opt;
projLoop: while (1) {
2023-11-05 11:50:53 -07:00
opt = rls.keyInSelect(projectOptions, "Select");
2023-11-05 17:41:45 -07:00
if (opt !== 1) break projLoop;
envLoop: while (1) {
opt = rls.keyInSelect(projectOptions, "Select");
}
}
console.log({ infisicalInstance: url, storeTokens: store });
2023-11-05 11:50:53 -07:00
}