Skip to content

Commit

Permalink
[ddoc] wraps up design docs
Browse files Browse the repository at this point in the history
  • Loading branch information
dscape committed Jun 12, 2012
1 parent 3c8b154 commit a211f34
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 22 deletions.
60 changes: 40 additions & 20 deletions commands/design.js
Expand Up @@ -3,23 +3,6 @@ var helpers = require('../helpers');

var design = exports;

function generic_cb(callback) {
return function (err, body) {
if(err) {
console.log(err, callback.toString());
return callback(err);
}
// iterating and showing names would be better
futoncli.inspect.putObject(body, {
password: function (line) {
var password = line.match(/password.*\:\s(.*)$/)[1];
return line.replace(password, "'********'");
}
}, 2);
callback();
};
}

design.list = function () {
var args = helpers.parse_args([].slice.call(arguments,0), true);
var db = futoncli.db;
Expand All @@ -34,7 +17,7 @@ design.list = function () {
params.startkey = "_design/";
params.endkey = "_design0";

db.list(params, generic_cb(callback));
db.list(params, helpers.generic_cb(callback));
};

design.get = function (name) {
Expand All @@ -59,5 +42,42 @@ design.get = function (name) {

name = "_design/" + name;

db.get(name, params, generic_cb(callback));
};
db.get(name, params, helpers.generic_cb(callback));
};

design.query = function (design, view) {
var err;

if(typeof design === "function") {
err = new Error("You didn't provide a design document name.");
return design(err);
}

if(typeof view === "function") {
err = new Error("You didn't provide a view name.");
return view(err);
}

var args = helpers.parse_args([].slice.call(arguments, 0), true);
var db = futoncli.db;
var params = args[1];
var callback = args[2];

err = args[0];

if(err) {
return callback(err);
}

db.view(design, view, params, helpers.generic_cb(callback));
};

design.usage = [
'',
'`futon config *` commands allow you to edit your',
'local futon configuration file. Valid commands are:',
'',
'futon design list <arg1=val1> <arg2=val2> ...',
'futon design get <ddoc> <arg1=val1> <arg2=val2> ...',
'futon design query <ddoc> <view> <arg1=val1> <arg2=val2> ...'
];
1 change: 0 additions & 1 deletion commands/index.js
@@ -1,4 +1,3 @@
var commands = exports;

commands.query = require('./query')
commands.design = require('./design')
Empty file removed commands/query.js
Empty file.
2 changes: 1 addition & 1 deletion config.js
Expand Up @@ -51,7 +51,7 @@ futoncli.use(require('flatiron-cli-config'), {
var display = [
'Here is your ' + configFile.grey + ' file:',
'If you\'d like to change a property try:',
'futoncli config set <key> <value>'
'futon config set <key> <value>'
];

display.forEach(function (line) {
Expand Down
18 changes: 18 additions & 0 deletions helpers.js
@@ -1,3 +1,4 @@
var futoncli = require('../futoncli');
var helpers = exports;

helpers.parse_args = function (args, require_cb) {
Expand All @@ -16,9 +17,26 @@ helpers.parse_args = function (args, require_cb) {
var current = args[k];
var kv;
if(typeof current === "string" && (kv = current.split("=")) && kv[1]) {
try { kv[1] = JSON.parse(kv[1]); } catch (ex) {}
params[kv[0]] = kv[1];
}
}

return [null, params, callback];
};

helpers.generic_cb = function (callback) {
return function (err, body) {
if(err) {
return callback(err);
}
// iterating and showing names would be better
futoncli.inspect.putObject(body, {
password: function (line) {
var password = line.match(/password.*\:\s(.*)$/)[1];
return line.replace(password, "'********'");
}
}, 2);
callback();
};
};

0 comments on commit a211f34

Please sign in to comment.