#!/usr/bin/env coffee # vim:ft=coffee ts=2 sw=2 et : # -*- mode:coffee -*- Q = require 'q' Brobbot = require '..' Fs = require 'fs' OptParse = require 'optparse' Path = require 'path' Switches = [ [ "-b", "--brain BRAIN", "The Brain to use" ], [ "-a", "--adapter ADAPTER", "The Adapter to use" ], [ "-s", "--scripts SCRIPTS", "comma-separated list of scripts to load"], [ "-c", "--create PATH", "Create a deployable brobbot" ], [ "-d", "--disable-httpd", "Disable the HTTP server" ], [ "-h", "--help", "Display the help information" ], [ "-l", "--alias ALIAS", "Enable replacing the robot's name with alias" ], [ "-n", "--name NAME", "The name of the robot in chat" ], [ "-t", "--config-check", "Test brobbot's config to make sure it won't fail at startup"] [ "-v", "--version", "Displays the version of brobbot installed" ] ] Options = brain: process.env.BROBBOT_BRAIN or "dumb" adapter: process.env.BROBBOT_ADAPTER or "shell" alias: process.env.BROBBOT_ALIAS or false create: process.env.BROBBOT_CREATE or false enableHttpd: process.env.BROBBOT_HTTPD or true scripts: process.env.BROBBOT_SCRIPTS or "" name: process.env.BROBBOT_NAME or "Brobbot" path: process.env.BROBBOT_PATH or "." configCheck: false if Options.scripts Options.scripts = Options.scripts.split(',') else Options.scripts = [] Parser = new OptParse.OptionParser(Switches) Parser.banner = "Usage brobbot [options]" Parser.on "brain", (opt, value) -> Options.brain = value Parser.on "adapter", (opt, value) -> Options.adapter = value Parser.on "create", (opt, value) -> Options.path = value Options.create = true Parser.on "disable-httpd", (opt) -> Options.enableHttpd = false Parser.on "help", (opt, value) -> console.log Parser.toString() process.exit 0 Parser.on "alias", (opt, value) -> value or= '/' Options.alias = value Parser.on "name", (opt, value) -> Options.name = value Parser.on "scripts", (opt, value) -> Options.scripts = Options.scripts.concat value.split(',') Parser.on "config-check", (opt) -> Options.configCheck = true Parser.on "version", (opt, value) -> Options.version = true Parser.parse process.argv unless process.platform is "win32" process.on 'SIGTERM', -> process.exit 0 adapterPath = Path.join __dirname, "..", "src", "adapters" brainPath = Path.join __dirname, "..", "src", "brains" if Options.version console.log require('./package.json').version process.exit 0 robot = Brobbot.loadBot Options.scripts, adapterPath, Options.adapter, brainPath, Options.brain, Options.enableHttpd, Options.name robot.alias = Options.alias robot.ready.then -> robot.run()