const cacheDefaults = (finalConfig, parsedArgs, outputOptions) => {
    // eslint-disable-next-line no-prototype-builtins
    const hasCache = finalConfig.hasOwnProperty('cache');
    let cacheConfig = {};
    if (hasCache && (parsedArgs.config || (outputOptions && outputOptions.defaultConfig))) {
        if (finalConfig.cache && finalConfig.cache.type === 'filesystem') {
            cacheConfig.buildDependencies = {
                config: parsedArgs.config || [outputOptions.defaultConfig],
            };
        } else {
            cacheConfig = finalConfig.cache;
        }
        return { cache: cacheConfig };
    }
    return cacheConfig;
};

const assignFlagDefaults = (compilerConfig, parsedArgs, outputOptions) => {
    if (Array.isArray(compilerConfig)) {
        return compilerConfig.map((config) => cacheDefaults(config, parsedArgs, outputOptions));
    }
    return cacheDefaults(compilerConfig, parsedArgs, outputOptions);
};

module.exports = assignFlagDefaults;