40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 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],
 | 
						|
    };
 | 
						|
};
 |