constructor(options = {}) {
        this.version = version_1.VERSION;
        this.expressApp = (0, express_1.default)();
        this.log = options.log || (0, get_log_1$1.getLog)().child({ name: "server" });
        this.probotApp = new options.Probot();
        this.state = {
            port: options.port,
            host: options.host,
            webhookPath: options.webhookPath || "/",
            webhookProxy: options.webhookProxy,
        };
        this.expressApp.use((0, logging_middleware_1$1.getLoggingMiddleware)(this.log, options.loggingOptions));
        this.expressApp.use("/probot/static/", express_1.default.static((0, path_1$2.join)(__dirname, "..", "..", "static")));
        this.expressApp.use(this.state.webhookPath, (0, webhooks_1$1.createNodeMiddleware)(this.probotApp.webhooks, {
            path: "/",
        }));
        this.expressApp.engine("handlebars", (0, express_handlebars_1.engine)({
            defaultLayout: false,
        }));
        this.expressApp.set("view engine", "handlebars");
        this.expressApp.set("views", (0, path_1$2.join)(__dirname, "..", "..", "views"));
        this.expressApp.get("/ping", (req, res) => res.end("PONG"));
    }
Define a command.

There are two styles of command: pay attention to where to put the description.

Examples:

     // Command implemented using action handler (description is supplied separately to `.command`)
     program
       .command('clone <source> [destination]')
       .description('clone a repository into a newly created directory')
       .action((source, destination) => {
         console.log('clone command called');
       });

     // Command implemented using separate executable file (description is second parameter to `.command`)
     program
       .command('start <service>', 'start named service')
       .command('stop [service]', 'stop named service, or all if no name supplied');

@param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`
@param {Object|string} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)
@param {Object} [execOpts] - configuration options (for executable)
@return {Command} returns new command for action handler, or `this` for executable command
@api public