UNPKG

sol-merger

Version:

Merges all import files into single file.

105 lines 4.69 kB
#!/usr/bin/env node "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const picocolors_1 = __importDefault(require("picocolors")); const commander_1 = __importDefault(require("commander")); const debug_1 = __importDefault(require("debug")); const fs_extra_1 = __importDefault(require("fs-extra")); const glob_1 = __importDefault(require("glob")); const path_1 = __importDefault(require("path")); const merger_1 = require("../lib/merger"); const utils_1 = require("../lib/utils"); const done_1 = require("../utils/done"); const pluginsLoader_1 = require("./pluginsLoader"); const debug = (0, debug_1.default)('sol-merger:debug'); let inputGlob = ''; let outputDir = ''; let append = ''; commander_1.default .option('-a, --append [append]', '', /^([a-zA-Z_]+)$/) .option('-c, --remove-comments', `Remove comment from exports`, false) .option('-p, --export-plugin [pathToPlugin]', `Add post processor for exports`, collectArrayOptions, []) .option('-r, --additional-root [pathToRoot]', `Add additional root to search contracts in`, collectArrayOptions, []) .arguments('<glob> [outputDir]') .action((_glob, _outputDir) => { inputGlob = _glob; outputDir = _outputDir; }) .parse(process.argv); if (!inputGlob) { console.log(picocolors_1.default.red('Please specify input solidity contract.')); commander_1.default.outputHelp(); (0, done_1.done)(); } append = commander_1.default.append || '_merged'; if (outputDir) { outputDir = path_1.default.isAbsolute(outputDir) ? outputDir : path_1.default.join(process.cwd(), outputDir); } debug('Output directory', outputDir); debug('Remove comments?', commander_1.default.removeComments); debug('Export plugins', commander_1.default.exportPlugin); debug('Additional roots', commander_1.default.additionalRoot); (0, glob_1.default)(inputGlob, { cwd: process.cwd(), absolute: true, }, execute); function execute(err, files) { return __awaiter(this, void 0, void 0, function* () { if (err) { return (0, done_1.done)(err); } debug(files); if (files.length === 0) { console.log(picocolors_1.default.yellow('No files found for merge')); } const exportPlugins = yield getExportPlugins(commander_1.default.exportPlugin); const promises = files.map((file) => __awaiter(this, void 0, void 0, function* () { const merger = new merger_1.Merger({ delimeter: '\n\n', removeComments: commander_1.default.removeComments, exportPlugins, additionalRoots: commander_1.default.additionalRoot, }); let result; result = yield merger.processFile(file, true); let outputFile; if (outputDir) { outputFile = path_1.default.join(outputDir, path_1.default.basename(file)); } else { const extname = path_1.default.extname(file); outputFile = path_1.default.join(path_1.default.dirname(file), path_1.default.basename(file, extname) + append + extname); } debug(`${file} -> ${outputFile}`); yield fs_extra_1.default.outputFile(outputFile, result, { encoding: 'utf-8' }); })); Promise.all(promises) .then(() => (0, done_1.done)()) .catch(done_1.done); }); } function collectArrayOptions(value, previousValue) { return previousValue.concat([value]); } function getExportPlugins(plugins) { return __awaiter(this, void 0, void 0, function* () { const npmRoot = yield utils_1.Utils.getNodeModulesPath(process.cwd()); const loader = new pluginsLoader_1.PluginsLoader(plugins, npmRoot); return loader.getPlugins(); }); } //# sourceMappingURL=sol-merger.js.map