Install:
git clone https://gist.github.com/4e10acd2153fbe00c104.git add-keywords
cd add-keywords
npm link
Usage:
cd ../your/repos
add-keywords strongloop/package.json strong-*/package.json
node_modules |
#!/usr/bin/env node | |
var async = require('async'); | |
var fs = require('fs') | |
var lo = require('lodash'); | |
var open = require('json-file-plus') | |
var path = require('path') | |
var util = require('util') | |
if (process.argv.length < 4) { | |
console.error('usage: %s OUTPUT INPUT...', process.argv[1]); | |
process.exit(1); | |
} | |
function readFileSync(name) { | |
return fs.readFileSync(name,{encoding: 'utf8'}) | |
} | |
var output = process.argv[2]; | |
open(output, function (err, json) { | |
if(err) { | |
console.error('open %s failed: %s', output, err) | |
process.exit(1) | |
} | |
var keywords = json.get('keywords') || []; | |
var inputs = process.argv.slice(3); | |
console.log('inputs:', inputs); | |
console.log('output:', output); | |
async.map(inputs, function(input, callback) { | |
open(input, function(err, json) { | |
if (err) return callback(err); | |
return callback(null, json.get('keywords') || []); | |
}); | |
}, function(err, outputs) { | |
if(err) { | |
console.error('open %s failed: %s', input, err) | |
process.exit(1) | |
} | |
keywords = lo.flatten([keywords, outputs]); | |
keywords = lo.uniq(keywords.sort()); | |
console.log('keywords:', keywords); | |
json.set({keywords: keywords}); | |
json.save(function(err) { | |
if(err) throw err | |
}) | |
}); | |
}) | |
{ | |
"name": "add-keywords", | |
"version": "0.0.0", | |
"description": "add keywords into a package", | |
"bin": "index.js", | |
"author": "sam@strongloop.com", | |
"license": "MIT", | |
"dependencies": { | |
"json-file-plus": "~0.2.3", | |
"lodash": "^2.4.1" | |
} | |
} |