{"version":3,"sources":["../../src/utilities/writeIndexCli.js"],"names":["directoryPaths","options","sortedDirectoryPaths","updateIndex","green","red","recursive","ignoreUnsafe","extensions","map","dir","fileName","silent","flatten","uniq","reverse","join","filter","directoryPath","forEach","existingIndexCode","config","siblings","indexCode","banner","indexFilePath","resolve","readFileSync","error","writeFileSync","yellow"],"mappings":"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","file":"writeIndexCli.js","sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport _ from 'lodash';\nimport chalk from 'chalk';\nimport createIndexCode from './createIndexCode';\nimport validateTargetDirectory from './validateTargetDirectory';\nimport readDirectory from './readDirectory';\nimport readIndexConfig from './readIndexConfig';\nimport sortByDepth from './sortByDepth';\nimport log from './log';\nimport findIndexFiles from './findIndexFiles';\n\nexport default (directoryPaths, options = {}) => {\n let sortedDirectoryPaths;\n\n sortedDirectoryPaths = sortByDepth(directoryPaths);\n\n log('Target directories', sortedDirectoryPaths);\n if (options.updateIndex) {\n log('Update index:', options.updateIndex ? chalk.green('true') : chalk.red('false'));\n } else {\n log('Recursive:', options.recursive ? chalk.green('true') : chalk.red('false'));\n log('Ignore unsafe:', options.ignoreUnsafe ? chalk.green('true') : chalk.red('false'));\n log('Extensions:', chalk.green(options.extensions));\n }\n\n if (options.updateIndex || options.recursive) {\n sortedDirectoryPaths = _.map(sortedDirectoryPaths, (dir) => {\n return findIndexFiles(dir, {\n fileName: options.updateIndex ? 'index.js' : '*',\n silent: options.updateIndex || options.ignoreUnsafe\n });\n });\n sortedDirectoryPaths = _.flatten(sortedDirectoryPaths);\n sortedDirectoryPaths = _.uniq(sortedDirectoryPaths);\n sortedDirectoryPaths = sortByDepth(sortedDirectoryPaths);\n\n log('Updating index files in:', sortedDirectoryPaths.reverse().join(', '));\n }\n\n sortedDirectoryPaths = sortedDirectoryPaths.filter((directoryPath) => {\n return validateTargetDirectory(directoryPath, {silent: options.ignoreUnsafe});\n });\n\n _.forEach(sortedDirectoryPaths, (directoryPath) => {\n let existingIndexCode;\n\n const config = readIndexConfig(directoryPath);\n\n const siblings = readDirectory(directoryPath, {\n config,\n extensions: options.extensions,\n silent: options.ignoreUnsafe\n });\n\n const indexCode = createIndexCode(siblings, {\n banner: options.banner,\n config\n });\n\n const indexFilePath = path.resolve(directoryPath, 'index.js');\n\n try {\n existingIndexCode = fs.readFileSync(indexFilePath, 'utf8');\n\n /* eslint-disable no-empty */\n } catch (error) {\n\n }\n\n /* eslint-enable no-empty */\n\n fs.writeFileSync(indexFilePath, indexCode);\n\n if (existingIndexCode && existingIndexCode === indexCode) {\n log(indexFilePath, chalk.yellow('[index has not changed]'));\n } else if (existingIndexCode && existingIndexCode !== indexCode) {\n log(indexFilePath, chalk.green('[updated index]'));\n } else {\n log(indexFilePath, chalk.green('[created index]'));\n }\n });\n\n log('Done');\n};\n"]}