autocode-cli
Version:
code automation for every language, framework and platform
60 lines (53 loc) • 1.87 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var bluebird, info, request;
bluebird = require('bluebird');
request = require('sync-request');
request = bluebird.promisifyAll(request);
info = function(opts) {
var crystal, export_name, import_name, mod_name, mod_version, module, module_export, module_import, name, resp, type;
crystal = this;
if (typeof opts === 'object') {
if (opts._ && opts._[1]) {
name = opts._[1];
} else if (opts.name) {
name = opts.name;
}
} else if (typeof name === 'string') {
name = opts;
}
if (!name) {
throw new Error("'name' is required for crystal search");
}
type = name.match(/\./) ? 'module' : 'collection';
console.log(("Getting info for " + type + " (" + name + ")...").blue);
resp = request('get', crystal.url('api', "modules/" + name));
if (resp.statusCode !== 200) {
if (resp.statusCode === 404) {
throw new Error("Module does not exist: " + name);
} else {
throw new Error('Unable to get info.');
}
}
module = JSON.parse(resp.body);
console.log(("\n" + module.name + " v" + module.version).bold);
console.log("" + module.description);
console.log("\nModules:".bold);
for (mod_name in module.modules) {
mod_version = module.modules[mod_name];
console.log("- " + mod_name + "@" + mod_version);
}
console.log("\nImports:".bold);
for (import_name in module.imports) {
module_import = module.imports[import_name];
console.log("- " + import_name);
}
console.log("\nExports:".bold);
for (export_name in module.exports) {
module_export = module.exports[export_name];
console.log("- " + export_name + " (" + module_export.type + ")");
}
return console.log("");
};
module.exports = info;
}).call(this);