UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

34 lines 1.57 kB
import path from 'path'; import { readJsonFile, writeJsonFile } from '../../utils/file.js'; import { SERVICE_WORKLOAD_CONFIG_FILE_NAME } from './config/serviceConfig.js'; import { findService, getService } from './serviceRegistry.js'; export const getCurrentServiceConfig = (serviceConfig, serviceName) => serviceConfig?.services?.[serviceName] ?? {}; export const resolveServiceSelection = async (serviceName, currentConfig, options = {}, dependencies = {}) => { const service = getService(serviceName); if (typeof service.resolveSelection === 'function') { return service.resolveSelection(currentConfig, options, dependencies); } return { ...service.createDefaultConfigSection(), ...currentConfig }; }; export const persistServiceConfig = (context, serviceName, serviceConfig, dependencies = {}) => { const readJsonFileImpl = dependencies.readJsonFile ?? readJsonFile; const writeJsonFileImpl = dependencies.writeJsonFile ?? writeJsonFile; const currentRootConfig = readJsonFileImpl(context.configPath, { allowMissing: true }) ?? { services: {} }; const persistedConfigPath = findService(serviceName) ? path.join(path.dirname(context.configPath), serviceName, SERVICE_WORKLOAD_CONFIG_FILE_NAME) : context.configPath; const nextRootConfig = { ...currentRootConfig, services: { ...(currentRootConfig.services ?? {}), [serviceName]: serviceConfig } }; writeJsonFileImpl(persistedConfigPath, persistedConfigPath === context.configPath ? nextRootConfig : serviceConfig); return nextRootConfig; };