#!/usr/bin/env node
/* -*- Mode:Js */
/* vim: set expandtab ts=4 sw=4: */
/*
 * You may redistribute this program and/or modify it under the terms of
 * the GNU General Public License as published by the Free Software Foundation,
 * either version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
var Cjdns = require('./lib/cjdnsadmin/cjdnsadmin');
var nThen = require('nthen');

var cjdns;
nThen(function (waitFor) {
    Cjdns.connectWithAdminInfo(waitFor(function (c) { cjdns = c; }));
}).nThen(function (waitFor) {
    var code;
    if (process.argv[process.argv.length-1].indexOf('cexec') !== -1) {
        code = 'functions(cb)';
        console.log("Usage: ./tools/cexec 'ping()' ## For example to send a ping request");
        console.log("List of available RPC requests with parameters is as follows:");
    } else {
        code = process.argv[process.argv.length-1].replace(/\).*$/, ',cb);');
        code = code.replace('(,cb);', '(cb);');
    }
    var f = new Function('x', 'cb', 'x.' + code);
    f(cjdns, function (err, ret) {
        if (err) { throw err; }
        console.log(JSON.stringify(ret, null, '  '));
        cjdns.disconnect();
    });
});
