var Q = require('q');
var path = require('path');
var fs = require('../util/fs');
var createError = require('../util/createError');

function help(logger, name, config) {
    var json;

    if (name) {
        json = path.resolve(__dirname, '../templates/json/help-' + name.replace(/\s+/g, '/') + '.json');
    } else {
        json = path.resolve(__dirname, '../templates/json/help.json');
    }

    return Q.promise(function (resolve) {
        fs.exists(json, resolve);
    })
    .then(function (exists) {
        if (!exists) {
            throw createError('Unknown command: ' + name, 'EUNKNOWNCMD', {
                command: name
            });
        }

        return require(json);
    });
}

// -------------------

help.readOptions = function (argv) {
    var cli = require('../util/cli');
    var options = cli.readOptions(argv);
    var name = options.argv.remain.slice(1).join(' ');

    return [name];
};

module.exports = help;
