UNPKG

trigger.dev

Version:

A Command-Line Interface for Trigger.dev projects

163 lines • 5.62 kB
import { existsSync, mkdirSync, writeFileSync } from "node:fs"; import path from "node:path"; import { z } from "zod"; import { xdgAppPaths } from "../imports/xdg-app-paths.js"; import { readJSONFileSync } from "./fileSystem.js"; import { logger } from "./logger.js"; function getGlobalConfigFolderPath() { const configDir = xdgAppPaths("trigger").config(); return configDir; } export const DEFFAULT_PROFILE = "default"; const CONFIG_FILE = "config.json"; const OLD_CONFIG_FILE = "default.json"; const CliConfigProfileSettings = z.object({ accessToken: z.string().optional(), apiUrl: z.string().optional(), }); const OldCliConfigFile = z.record(CliConfigProfileSettings); const CliConfigFile = z.object({ version: z.literal(2), currentProfile: z.string().default(DEFFAULT_PROFILE), profiles: z.record(CliConfigProfileSettings), settings: z .object({ hasSeenMCPInstallPrompt: z.boolean().optional(), hasSeenRulesInstallPrompt: z.boolean().optional(), lastRulesInstallPromptVersion: z.string().optional(), }) .optional(), }); function getOldAuthConfigFilePath() { return path.join(getGlobalConfigFolderPath(), OLD_CONFIG_FILE); } function getAuthConfigFilePath() { return path.join(getGlobalConfigFolderPath(), CONFIG_FILE); } function getAuthConfigFileBackupPath() { // Multiple calls won't overwrite old backups return path.join(getGlobalConfigFolderPath(), `${CONFIG_FILE}.bak-${Date.now()}`); } function getBlankConfig() { return { version: 2, currentProfile: DEFFAULT_PROFILE, profiles: {}, settings: { hasSeenMCPInstallPrompt: false, hasSeenRulesInstallPrompt: false, }, }; } function getConfig() { return readAuthConfigFile() ?? getBlankConfig(); } export function writeAuthConfigCurrentProfileName(profile) { const config = getConfig(); config.currentProfile = profile; writeAuthConfigFile(config); } export function readAuthConfigCurrentProfileName() { const config = getConfig(); return config.currentProfile; } export function writeAuthConfigProfile(settings, profile = DEFFAULT_PROFILE) { const config = getConfig(); config.profiles[profile] = settings; writeAuthConfigFile(config); } export function readAuthConfigProfile(profile = DEFFAULT_PROFILE) { try { const config = getConfig(); return config.profiles[profile]; } catch (error) { logger.debug(`Error reading auth config file: ${error}`); return undefined; } } export function readConfigHasSeenMCPInstallPrompt() { const config = getConfig(); return typeof config.settings?.hasSeenMCPInstallPrompt === "boolean" ? config.settings.hasSeenMCPInstallPrompt : false; } export function writeConfigHasSeenMCPInstallPrompt(hasSeenMCPInstallPrompt) { const config = getConfig(); config.settings = { ...config.settings, hasSeenMCPInstallPrompt, }; writeAuthConfigFile(config); } export function readConfigHasSeenRulesInstallPrompt() { const config = getConfig(); return typeof config.settings?.hasSeenRulesInstallPrompt === "boolean" ? config.settings.hasSeenRulesInstallPrompt : false; } export function writeConfigHasSeenRulesInstallPrompt(hasSeenRulesInstallPrompt) { const config = getConfig(); config.settings = { ...config.settings, hasSeenRulesInstallPrompt, }; writeAuthConfigFile(config); } export function readConfigLastRulesInstallPromptVersion() { const config = getConfig(); return config.settings?.lastRulesInstallPromptVersion; } export function writeConfigLastRulesInstallPromptVersion(version) { const config = getConfig(); config.settings = { ...config.settings, lastRulesInstallPromptVersion: version, }; writeAuthConfigFile(config); } export function deleteAuthConfigProfile(profile = DEFFAULT_PROFILE) { const config = getConfig(); delete config.profiles[profile]; if (config.currentProfile === profile) { config.currentProfile = DEFFAULT_PROFILE; } writeAuthConfigFile(config); } export function readAuthConfigFile() { try { const configFilePath = getAuthConfigFilePath(); const configFileExists = existsSync(configFilePath); logger.debug(`Reading auth config file`, { configFilePath, configFileExists }); const json = readJSONFileSync(configFileExists ? configFilePath : getOldAuthConfigFilePath()); if ("currentProfile" in json) { // This is the new format const parsed = CliConfigFile.parse(json); return parsed; } // This is the old format and we need to convert it const oldConfigFormat = OldCliConfigFile.parse(json); const newConfigFormat = { version: 2, currentProfile: DEFFAULT_PROFILE, profiles: oldConfigFormat, }; // Save to new config file location, the old file will remain untouched writeAuthConfigFile(newConfigFormat); return newConfigFormat; } catch (error) { logger.debug(`Error reading auth config file: ${error}`); return null; } } export function writeAuthConfigFile(config) { const authConfigFilePath = getAuthConfigFilePath(); mkdirSync(path.dirname(authConfigFilePath), { recursive: true, }); writeFileSync(path.join(authConfigFilePath), JSON.stringify(config, undefined, 2), { encoding: "utf-8", }); } //# sourceMappingURL=configFiles.js.map