1 |
|
2 | (function() {
|
3 | var request, search;
|
4 |
|
5 | request = require('request');
|
6 |
|
7 | search = function(opts) {
|
8 | var crystal, name;
|
9 | crystal = this;
|
10 | if (typeof opts === 'object') {
|
11 | if (opts._ && opts._[1]) {
|
12 | name = opts._[1];
|
13 | } else if (opts.name) {
|
14 | name = opts.name;
|
15 | }
|
16 | } else if (typeof name === 'string') {
|
17 | name = opts;
|
18 | }
|
19 | if (!name) {
|
20 | throw new Error("'name' is required for crystal search");
|
21 | }
|
22 | console.log("Searching for generators matching name (" + name + ")...");
|
23 | return request.get({
|
24 | qs: {
|
25 | name: "%" + name + "%"
|
26 | },
|
27 | url: crystal.url('api', 'modules')
|
28 | }, function(err, resp, body) {
|
29 | var i, len, mod, modules, results;
|
30 | if (err || resp.statusCode !== 200) {
|
31 | throw new Error('Search failed.');
|
32 | }
|
33 | modules = JSON.parse(body);
|
34 | console.log("Found " + modules.length + " generator(s)!");
|
35 | results = [];
|
36 | for (i = 0, len = modules.length; i < len; i++) {
|
37 | mod = modules[i];
|
38 | results.push(console.log("- " + mod.Collection.name + "." + mod.name));
|
39 | }
|
40 | return results;
|
41 | });
|
42 | };
|
43 |
|
44 | module.exports = search;
|
45 |
|
46 | }).call(this);
|