Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

60 lines (51 sloc) 1.774 kb
# Description:
# Load scripts from the hubot scripts directory on the fly for testing purposes
#
# Dependencies:
# None
#
# Configuration:
# None
#
# Commands:
# hubot script load <script> - Load a script
# hubot script list [-l] - List all availiable scripts (optional -l for list mode)
# hubot script info <script> - Print script help
#
# Author:
# unitio
Path = require 'path'
Fs = require 'fs'
module.exports = (robot) ->
# Private: Print help for a script
printHelp = (script, msg) ->
path = Path.resolve('node_modules', 'hubot-scripts', 'src', 'scripts')
# Call parseHelp on tmpRobot with custom array push, so we can capture the
# commands as they are added, there's no other way to access the populated
# commands array.
tmpRobot =
commands:
push: (command) ->
msg.send(command)
robot.parseHelp.call(tmpRobot, Path.join path, "#{script}.coffee")
# Load a script
robot.respond /script load (.*)$/i, (msg) ->
script = msg.match[1]
scriptPath = require.resolve(Path.resolve('node_modules', 'hubot-scripts', 'src', 'scripts', script))
printHelp(script, msg)
robot.loadFile(Path.dirname(scriptPath), Path.basename(scriptPath))
# List all available scripts
robot.respond /script list\s?(-l)?/i, (msg) ->
Fs.readdir Path.resolve('node_modules', 'hubot-scripts', 'src', 'scripts'), (err, files) ->
msg.send 'An error occurred' if err
listMode = msg.match[1]?
scripts = for file in files
Path.basename(file, '.coffee')
if listMode
msg.send scripts.join('\n')
else
msg.send scripts.join(', ')
# Print script help
robot.respond /script info (.*)/i, (msg) ->
script = msg.match[1]
printHelp(script, msg)
Jump to Line
Something went wrong with that request. Please try again.