conventional-changelog-action/node_modules/get-pkg-repo/cli.js

83 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
var fs = require('fs');
var getPkgRepo = require('./');
var meow = require('meow');
var through = require('through2');
var util = require('util');
var cli = meow({
help: [
'Practice writing repoitory url or validate the repository in a package.json file.',
'If used without specifying a package.json file path, you will enter an interactive shell.',
'Otherwise, the repository info in package.json is printed.',
'',
'Usage',
' get-pkg-repo',
' get-pkg-repo <path> [<path> ...]',
' cat <path> | get-pkg-repo',
'',
'Examples',
' get-pkg-repo',
' get-pkg-repo package.json',
' cat package.json | get-pkg-repo --fix-typo',
'',
'Options',
' -f, --fix-typo Fix your typical typos automatically'
]
});
var fixTypo = cli.flags.fixTypo;
var input = cli.input;
if (process.stdin.isTTY) {
if (input.length > 0) {
input.forEach(function(path) {
var repo;
fs.readFile(path, 'utf8', function(err, data) {
if (err) {
console.error(err);
return;
}
try {
repo = getPkgRepo(data, fixTypo);
console.log(repo);
} catch (e) {
console.error(path + ': ' + e.toString());
}
});
});
} else {
process.stdin
.pipe(through.obj(function(chunk, enc, cb) {
var repo;
var pkgData = {
repository: chunk.toString()
};
try {
repo = getPkgRepo(pkgData, fixTypo);
cb(null, util.format(repo) + '\n');
} catch (e) {
console.error(e.toString());
cb();
}
}))
.pipe(process.stdout);
}
} else {
process.stdin
.pipe(through.obj(function(chunk, enc, cb) {
var repo;
try {
repo = getPkgRepo(chunk.toString(), fixTypo);
} catch (e) {
console.error(e.toString());
process.exit(1);
}
cb(null, util.format(repo) + '\n');
}))
.pipe(process.stdout);
}