index.js 1.12 KB
Newer Older
lxyang committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/*
 Copyright (c) 2012, Yahoo! Inc.  All rights reserved.
 Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
 */

var Factory = require('../util/factory'),
    factory = new Factory('command', __dirname, true);

function Command() {}
// add register, create, mix, loadAll, getCommandList, resolveCommandName to the Command object
factory.bindClassMethods(Command);

Command.prototype = {
    toolName: function () {
        return require('../util/meta').NAME;
    },

    type: function () {
        return this.constructor.TYPE;
    },
    synopsis: /* istanbul ignore next: base method */ function () {
        return "the developer has not written a one-line summary of the " + this.type() + " command";
    },
    usage: /* istanbul ignore next: base method */ function () {
        console.error("the developer has not provided a usage for the " + this.type() + " command");
    },
    run: /* istanbul ignore next: abstract method */ function (args, callback) {
        return callback(new Error("run: must be overridden for the " + this.type() + " command"));
    }
};

module.exports = Command;