Skip to content

Instantly share code, notes, and snippets.

@sam-github
Last active August 29, 2015 14:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sam-github/4e10acd2153fbe00c104 to your computer and use it in GitHub Desktop.
Save sam-github/4e10acd2153fbe00c104 to your computer and use it in GitHub Desktop.
add-keywords
node_modules

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
#!/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"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment