39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
import { join } from "path";
|
|
import { getConfigData } from "./getConfigData";
|
|
import { getConfigFilepath } from "./getConfigFilepath";
|
|
import { getCredentialsFilepath } from "./getCredentialsFilepath";
|
|
import { getHomeDir } from "./getHomeDir";
|
|
import { parseIni } from "./parseIni";
|
|
import { slurpFile } from "./slurpFile";
|
|
const swallowError = () => ({});
|
|
export const CONFIG_PREFIX_SEPARATOR = ".";
|
|
export const loadSharedConfigFiles = async (init = {}) => {
|
|
const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;
|
|
const homeDir = getHomeDir();
|
|
const relativeHomeDirPrefix = "~/";
|
|
let resolvedFilepath = filepath;
|
|
if (filepath.startsWith(relativeHomeDirPrefix)) {
|
|
resolvedFilepath = join(homeDir, filepath.slice(2));
|
|
}
|
|
let resolvedConfigFilepath = configFilepath;
|
|
if (configFilepath.startsWith(relativeHomeDirPrefix)) {
|
|
resolvedConfigFilepath = join(homeDir, configFilepath.slice(2));
|
|
}
|
|
const parsedFiles = await Promise.all([
|
|
slurpFile(resolvedConfigFilepath, {
|
|
ignoreCache: init.ignoreCache,
|
|
})
|
|
.then(parseIni)
|
|
.then(getConfigData)
|
|
.catch(swallowError),
|
|
slurpFile(resolvedFilepath, {
|
|
ignoreCache: init.ignoreCache,
|
|
})
|
|
.then(parseIni)
|
|
.catch(swallowError),
|
|
]);
|
|
return {
|
|
configFile: parsedFiles[0],
|
|
credentialsFile: parsedFiles[1],
|
|
};
|
|
};
|