#!/usr/bin/env node 'use strict' var conventionalChangelogWriter = require('./') var forEach = require('lodash').forEach var fs = require('fs') var meow = require('meow') var path = require('path') var split = require('split') var cli = meow(` Usage conventional-changelog-writer [ ...] cat | conventional-changelog-writer , Example conventional-changelog-writer commits.ldjson cat commits.ldjson | conventional-changelog-writer , Options -c, --context A filepath of a json that is used to define template variables -o, --options A filepath of a javascript object that is used to define options `, { flags: { context: { alias: `c` }, options: { alias: `o` } } }) var filePaths = [] var flags = cli.flags forEach(cli.input, function (input) { filePaths.push(input) }) var length = filePaths.length var templateContext var contextPath = flags.context if (contextPath) { try { templateContext = require(path.resolve(process.cwd(), contextPath)) } catch (err) { console.error('Failed to get context from file ' + contextPath + '\n' + err) process.exit(1) } } var options var optionsPath = flags.options if (optionsPath) { try { options = require(path.resolve(process.cwd(), optionsPath)) } catch (err) { console.error('Failed to get options from file ' + optionsPath + '\n' + err) process.exit(1) } } try { var stream = conventionalChangelogWriter(templateContext, options) } catch (err) { console.error(err.toString()) process.exit(1) } function processFile (fileIndex) { var filePath = filePaths[fileIndex] fs.createReadStream(filePath) .on('error', function (err) { console.warn('Failed to read file ' + filePath + '\n' + err) if (++fileIndex < length) { processFile(fileIndex) } }) .pipe(split(JSON.parse)) .on('error', function (err) { console.warn('Failed to split commits in file ' + filePath + '\n' + err) }) .pipe(stream) .on('error', function (err) { console.warn('Failed to process file ' + filePath + '\n' + err) if (++fileIndex < length) { processFile(fileIndex) } }) .on('end', function () { if (++fileIndex < length) { processFile(fileIndex) } }) .pipe(process.stdout) } if (!process.stdin.isTTY) { process.stdin .pipe(split(JSON.parse)) .on('error', function (err) { console.error('Failed to split commits\n' + err) process.exit(1) }) .pipe(stream) .on('error', function (err) { console.error('Failed to process file\n' + err) process.exit(1) }) .pipe(process.stdout) } else if (length === 0) { console.error('You must specify at least one line delimited json file') process.exit(1) } else { processFile(0) }