UNPKG

1.87 kBJavaScriptView Raw
1// Generated by CoffeeScript 1.10.0
2(function() {
3 var bluebird, info, request;
4
5 bluebird = require('bluebird');
6
7 request = require('sync-request');
8
9 request = bluebird.promisifyAll(request);
10
11 info = function(opts) {
12 var crystal, export_name, import_name, mod_name, mod_version, module, module_export, module_import, name, resp, type;
13 crystal = this;
14 if (typeof opts === 'object') {
15 if (opts._ && opts._[1]) {
16 name = opts._[1];
17 } else if (opts.name) {
18 name = opts.name;
19 }
20 } else if (typeof name === 'string') {
21 name = opts;
22 }
23 if (!name) {
24 throw new Error("'name' is required for crystal search");
25 }
26 type = name.match(/\./) ? 'module' : 'collection';
27 console.log(("Getting info for " + type + " (" + name + ")...").blue);
28 resp = request('get', crystal.url('api', "modules/" + name));
29 if (resp.statusCode !== 200) {
30 if (resp.statusCode === 404) {
31 throw new Error("Module does not exist: " + name);
32 } else {
33 throw new Error('Unable to get info.');
34 }
35 }
36 module = JSON.parse(resp.body);
37 console.log(("\n" + module.name + " v" + module.version).bold);
38 console.log("" + module.description);
39 console.log("\nModules:".bold);
40 for (mod_name in module.modules) {
41 mod_version = module.modules[mod_name];
42 console.log("- " + mod_name + "@" + mod_version);
43 }
44 console.log("\nImports:".bold);
45 for (import_name in module.imports) {
46 module_import = module.imports[import_name];
47 console.log("- " + import_name);
48 }
49 console.log("\nExports:".bold);
50 for (export_name in module.exports) {
51 module_export = module.exports[export_name];
52 console.log("- " + export_name + " (" + module_export.type + ")");
53 }
54 return console.log("");
55 };
56
57 module.exports = info;
58
59}).call(this);