JezK
Edit File: rc.js.map
{"version":3,"file":"rc.js","names":["require","Command","commander","PATH_KEYS","Set","getRcConfigForCwd","cwd","args","config","indexOf","Object","assign","rcUtil","findRc","fileText","filePath","loadRcFile","index","value","charAt","readFileSync","getRcConfigForFolder","resolve","existsSync","parse","values","object","match","yarnPath","key","has","replace","dirname","buildRcArgs","argsForCommands","Map","keyMatch","commandName","arg","get","set","option","_findOption","optional","required","push","extractCwdArg","i","I","length","getRcArgs","previousCwds","origCwd","process","argMap","newArgs","newCwd","Error","concat"],"sourceRoot":"../src","sources":["rc.js"],"sourcesContent":["/* @flow */\n\nimport {existsSync, readFileSync} from 'fs';\nimport {dirname, resolve} from 'path';\n\nconst { Command } = require('commander');\n\nimport {parse} from './lockfile';\nimport * as rcUtil from './util/rc.js';\n\nconst commander = new Command();\n\n// Keys that will get resolved relative to the path of the rc file they belong to\nconst PATH_KEYS = new Set([\n 'yarn-path',\n 'cache-folder',\n 'global-folder',\n 'modules-folder',\n 'cwd',\n 'offline-cache-folder',\n]);\n\n// given a cwd, load all .yarnrc files relative to it\nexport function getRcConfigForCwd(cwd: string, args: Array<string>): {[key: string]: string} {\n const config = {};\n\n if (args.indexOf('--no-default-rc') === -1) {\n Object.assign(\n config,\n rcUtil.findRc('yarn', cwd, (fileText, filePath) => {\n return loadRcFile(fileText, filePath);\n }),\n );\n }\n\n for (let index = args.indexOf('--use-yarnrc'); index !== -1; index = args.indexOf('--use-yarnrc', index + 1)) {\n const value = args[index + 1];\n\n if (value && value.charAt(0) !== '-') {\n Object.assign(config, loadRcFile(readFileSync(value, 'utf8'), value));\n }\n }\n\n return config;\n}\n\nexport function getRcConfigForFolder(cwd: string): {[key: string]: string} {\n const filePath = resolve(cwd, '.yarnrc');\n if (!existsSync(filePath)) {\n return {};\n }\n\n const fileText = readFileSync(filePath, 'utf8');\n return loadRcFile(fileText, filePath);\n}\n\nfunction loadRcFile(fileText: string, filePath: string): {[key: string]: string} {\n let {object: values} = parse(fileText, filePath);\n\n if (filePath.match(/\\.yml$/) && typeof values.yarnPath === 'string') {\n values = {'yarn-path': values.yarnPath};\n }\n\n // some keys reference directories so keep their relativity\n for (const key in values) {\n if (PATH_KEYS.has(key.replace(/^(--)?([^.]+\\.)*/, ''))) {\n values[key] = resolve(dirname(filePath), values[key]);\n }\n }\n\n return values;\n}\n\n// get the built of arguments of a .yarnrc chain of the passed cwd\nfunction buildRcArgs(cwd: string, args: Array<string>): Map<string, Array<string>> {\n const config = getRcConfigForCwd(cwd, args);\n\n const argsForCommands: Map<string, Array<string>> = new Map();\n\n for (const key in config) {\n // args can be prefixed with the command name they're meant for, eg.\n // `--install.check-files true`\n const keyMatch = key.match(/^--(?:([^.]+)\\.)?(.*)$/);\n if (!keyMatch) {\n continue;\n }\n\n const commandName = keyMatch[1] || '*';\n const arg = keyMatch[2];\n const value = config[key];\n\n // create args for this command name if we didn't previously have them\n const args = argsForCommands.get(commandName) || [];\n argsForCommands.set(commandName, args);\n\n // turn config value into appropriate cli flag\n const option = commander._findOption(`--${arg}`);\n\n // If commander doesn't recognize the option or it takes a value after it\n if (!option || option.optional || option.required) {\n args.push(`--${arg}`, value);\n } else if (value === true) {\n // we can't force remove an arg from cli\n args.push(`--${arg}`);\n }\n }\n\n return argsForCommands;\n}\n\n// extract the value of a --cwd arg if present\nfunction extractCwdArg(args: Array<string>): ?string {\n for (let i = 0, I = args.length; i < I; ++i) {\n const arg = args[i];\n if (arg === '--') {\n return null;\n } else if (arg === '--cwd') {\n return args[i + 1];\n }\n }\n return null;\n}\n\n// get a list of arguments from .yarnrc that apply to this commandName\nexport function getRcArgs(commandName: string, args: Array<string>, previousCwds?: Array<string> = []): Array<string> {\n // for the cwd, use the --cwd arg if it was passed or else use process.cwd()\n const origCwd = extractCwdArg(args) || process.cwd();\n\n // get a map of command names and their arguments\n const argMap = buildRcArgs(origCwd, args);\n\n // concat wildcard arguments and arguments meant for this specific command\n const newArgs = [...(argMap.get('*') || []), ...(argMap.get(commandName) || [])];\n\n // check if the .yarnrc args specified a cwd\n const newCwd = extractCwdArg(newArgs);\n if (newCwd && newCwd !== origCwd) {\n // ensure that we don't enter into a loop\n if (previousCwds.indexOf(newCwd) !== -1) {\n throw new Error(`Recursive .yarnrc files specifying --cwd flags. Bailing out.`);\n }\n\n // if we have a new cwd then let's refetch the .yarnrc args relative to it\n return getRcArgs(commandName, newArgs, previousCwds.concat(origCwd));\n }\n\n return newArgs;\n}\n"],"mappings":"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"}