relaycode
Version:
A developer assistant that automates applying code changes from LLMs.
3 lines • 1.76 kB
JavaScript
import {z}from'zod';import e from'path';import {promises}from'fs';import {ConfigSchema}from'relaycode-core';import {CONFIG_FILE_NAMES,CONFIG_FILE_NAME_JSON,STATE_DIRECTORY_NAME}from'../utils/constants';import {isEnoentError,logger}from'../utils/logger';import g from'chalk';const C=async(r=process.cwd())=>{for(const t of CONFIG_FILE_NAMES){const o=e.join(r,t);try{return await promises.access(o),o}catch(n){isEnoentError(n);}}return null},d=async(r=process.cwd())=>{const t=await C(r);if(!t)return null;try{const o=await promises.readFile(t,"utf-8"),n=JSON.parse(o);return ConfigSchema.parse(n)}catch(o){if(isEnoentError(o))return null;throw o instanceof z.ZodError?new Error(`Invalid configuration in ${e.basename(t)}: ${o.message}`):o}},F=async(r=process.cwd())=>{const t=await d(r);return t||(logger.error(`Configuration file ('${g.cyan(CONFIG_FILE_NAME_JSON)}') not found.`),logger.info(`Please run ${g.magenta("'relay init'")} to create one.`),process.exit(1)),t},p=new Map,w=r=>e.resolve(r,STATE_DIRECTORY_NAME),I=async(r=process.cwd())=>{const t=w(r);p.has(t)||(await promises.mkdir(t,{recursive:true}),p.set(t,true));},J=async(r,t=process.cwd())=>{const n={$schema:"https://relay.noca.pro/schema.json",...ConfigSchema.parse({projectId:r})},m=e.join(t,CONFIG_FILE_NAME_JSON);return await promises.writeFile(m,JSON.stringify(n,null,2)),n},_=async(r=process.cwd())=>{try{const t=e.join(r,"package.json"),o=await promises.readFile(t,"utf-8"),n=JSON.parse(o);if(n.name&&typeof n.name=="string")return n.name}catch{}return e.basename(r)};
export{J as createConfig,I as ensureStateDirExists,d as findConfig,C as findConfigPath,_ as getProjectId,w as getStateDirectory,F as loadConfigOrExit};//# sourceMappingURL=config.js.map
//# sourceMappingURL=config.js.map