Skip to content

Instantly share code, notes, and snippets.

@deanrad
Created January 7, 2015 22:21
Show Gist options
  • Save deanrad/d3f18b07454cd8416417 to your computer and use it in GitHub Desktop.
Save deanrad/d3f18b07454cd8416417 to your computer and use it in GitHub Desktop.
// p = require('./extract_meteor_deps');
// Package = p.Package;
// getPackageDeps = p.getPackageDeps; depsByPackage = p.depsByPackage;
//
// > getPackageDeps('spacebars')
// ['htmljs', 'blaze', 'observe-sequence', 'templating']
// > depsByPackage
// {"spacebars": ['htmljs', 'blaze', 'observe-sequence', 'templating']}
var Package, api, depsByPackage, getPackageDeps, mockApiUse, _;
_ = require('underscore');
depsByPackage = {};
mockApiUse = function(usingPackage, what) {
var deps;
depsByPackage[usingPackage] || (depsByPackage[usingPackage] = []);
deps = depsByPackage[usingPackage];
return function(what) {
var item, _i, _len;
console.log("api.using " + what);
if (_.isArray(what)) {
for (_i = 0, _len = what.length; _i < _len; _i++) {
item = what[_i];
deps.push(item);
}
} else {
deps.push(what);
}
return deps;
};
};
nullFn = function() {}
api = {
"export": nullFn,
addFiles: nullFn,
imply: nullFn
};
Package = {
describe: nullFn,
onUse: function(fn) {
return fn(api);
},
onTest: nullFn,
registerBuildPlugin: nullFn,
includeTool: nullFn
};
Cordova = {
depends: nullFn
};
Npm = {
require: require,
depends: nullFn,
strip: nullFn
}
getPackageDeps = function(pname) {
var p;
api.use = mockApiUse(pname);
packageJsPath = "./packages/" + pname + "/package";
if(! fs.existsSync(packageJsPath + ".js")) return;
p = require(packageJsPath);
api.use = function() {
throw new Error("nope");
};
return depsByPackage[pname];
};
module.exports.Cordova = Cordova;
module.exports.Npm = Npm;
module.exports.Package = Package;
module.exports.getPackageDeps = getPackageDeps;
module.exports.depsByPackage = depsByPackage;
// current limitation
// this file must be run from a REPL
var __ = require('underscore');
var fs = require('fs');
var p = require('./extract_meteor_deps');
Package = p.Package;
var getPackageDeps = p.getPackageDeps;
var depsByPackage = p.depsByPackage;
packages = __.each(fs.readdirSync('./packages'), function(p){
if(p !== ".gitignore")
getPackageDeps(p);
})
console.dir(packages);
@PracticalCode
Copy link

Would you include a [ReadMe.txt] explaining how you would actually 'use/execute' this?

Thanks! :-)

@lnmunhoz
Copy link

lnmunhoz commented Jun 1, 2017

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment