migerh/js-module-walker

View on GitHub
lib/main.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const _ = require('lodash/fp'),
    {createEmitter} = require('./emitterFactory'),
    {Cycles} = require('./cycles');

module.exports = async function main(args, context) {
    const config = context.loadConfigFromCLI(args);

    if (config.paths.length === 0) {
        return Promise.reject(new Error('No input given.'));
    }

    const files = _.flattenDeep(context.collect(config.paths));
    const baseDir = context.findBaseDir(files);
    const imports = context.parseImports(files, baseDir, config.ignorePackages);

    let formatters = [];
    if (config.findCycles) {
        const cycles = new Cycles(imports);
        cycles.find();
        formatters.push(cycles);
    }

    const emitter = await createEmitter(config.output);
    await context.printDot(imports, emitter.stream, formatters);
    emitter.close();
}