robusta
Version:
A tool for generating Backbone/CoffeeScript Node.js-based apps
49 lines (40 loc) • 1.35 kB
text/coffeescript
pi = require './project_initializer.coffee'
runner = require './runner.coffee'
commands =
"-h":
description: "help"
exec: -> print_usage()
args: []
init:
description: "initialize a project with the default structure"
exec: -> pi.initialize_project()
args: []
run:
description: "watches your project for changes and runs the server"
exec: (args) -> runner.run(args)
args: [ {description: '<port>', default: 3000}]
print_usage = ->
console.log ""
console.log "Here is how you use Robusta:"
console.log ""
console.log "Usage:"
console.log " robusta [command] [args]"
console.log ""
console.log "Commands:"
for key, value of commands
value_names = ("#{arg.description}:#{arg.default}" for arg in value.args)
first_part = " robusta #{key} #{value_names.join(' ')}"
spacing = (' ' for x in [1..(30 - first_part.length)]).join('')
console.log "#{first_part}#{spacing}#{value.description}"
console.log ""
execute_command = (command, args) ->
command_data = commands[command]
return print_usage() if !command_data
if command_data.args.length
for arg_num in [0..command_data.args.length-1]
continue if args[arg_num]
args[arg_num] = command_data.args[arg_num].default
command_data.exec args
args = process.argv.splice(2)
return print_usage() if args.length <= 0
execute_command args[0], args.splice(1)