@storm-software/config-tools
Version:
A package containing various utilities to support custom workspace configurations and environment management for Storm Software projects, including configuration file handling, environment variable management, and logging utilities.
93 lines (90 loc) • 2.89 kB
JavaScript
import {
findWorkspaceRoot
} from "./chunk-LF3SAK2O.js";
import {
writeTrace
} from "./chunk-XHJNCOIU.js";
import {
joinPaths
} from "./chunk-V3GMJ4TX.js";
// src/config-file/get-config-file.ts
import { loadConfig } from "c12";
import defu from "defu";
var getConfigFileByName = async (fileName, filePath, options = {}) => {
const workspacePath = filePath || findWorkspaceRoot(filePath);
const configs = await Promise.all([
loadConfig({
cwd: workspacePath,
packageJson: true,
name: fileName,
envName: fileName?.toUpperCase(),
jitiOptions: {
debug: false,
fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(
process.env.STORM_CACHE_DIR || "node_modules/.cache/storm",
"jiti"
)
},
...options
}),
loadConfig({
cwd: workspacePath,
packageJson: true,
name: fileName,
envName: fileName?.toUpperCase(),
jitiOptions: {
debug: false,
fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(
process.env.STORM_CACHE_DIR || "node_modules/.cache/storm",
"jiti"
)
},
configFile: fileName,
...options
})
]);
return defu(configs[0] ?? {}, configs[1] ?? {});
};
var getConfigFile = async (filePath, additionalFileNames = []) => {
const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);
const result = await getConfigFileByName("storm-workspace", workspacePath);
let config = result.config;
const configFile = result.configFile;
if (config && configFile && Object.keys(config).length > 0 && !config.skipConfigLogging) {
writeTrace(
`Found Storm configuration file "${configFile.includes(`${workspacePath}/`) ? configFile.replace(`${workspacePath}/`, "") : configFile}" at "${workspacePath}"`,
{
logLevel: "all"
}
);
}
if (additionalFileNames && additionalFileNames.length > 0) {
const results = await Promise.all(
additionalFileNames.map(
(fileName) => getConfigFileByName(fileName, workspacePath)
)
);
for (const result2 of results) {
if (result2?.config && result2?.configFile && Object.keys(result2.config).length > 0) {
if (!config.skipConfigLogging && !result2.config.skipConfigLogging) {
writeTrace(
`Found alternative configuration file "${result2.configFile.includes(`${workspacePath}/`) ? result2.configFile.replace(`${workspacePath}/`, "") : result2.configFile}" at "${workspacePath}"`,
{
logLevel: "all"
}
);
}
config = defu(result2.config ?? {}, config ?? {});
}
}
}
if (!config || Object.keys(config).length === 0) {
return void 0;
}
config.configFile = configFile;
return config;
};
export {
getConfigFileByName,
getConfigFile
};