79 lines
1.6 KiB
Ruby
79 lines
1.6 KiB
Ruby
require "yawpa"
|
|
|
|
module Svi
|
|
class Cli
|
|
|
|
ALIASES = {
|
|
"co" => "checkout",
|
|
}
|
|
|
|
HELP_TEXT = <<EOS
|
|
Usage: svi [options] <command> [parameters...]
|
|
Global options:
|
|
--version show svi version and exit
|
|
--help, -h show this help and exit
|
|
|
|
Commands:
|
|
checkout/co check out Subversion URL
|
|
EOS
|
|
|
|
def initialize
|
|
@application = Application.new
|
|
end
|
|
|
|
def run(params)
|
|
options = {
|
|
version: {},
|
|
help: {short: "h"},
|
|
}
|
|
opts, args = Yawpa.parse(params, options, posix_order: true)
|
|
if opts[:version]
|
|
puts "svi, version #{Svi::VERSION}"
|
|
return 0
|
|
end
|
|
if opts[:help]
|
|
puts HELP_TEXT
|
|
return 0
|
|
end
|
|
if args.size < 1
|
|
$stderr.puts HELP_TEXT
|
|
return 1
|
|
end
|
|
run_subcommand(*args)
|
|
end
|
|
|
|
private
|
|
|
|
def run_subcommand(subcommand, *params)
|
|
if ALIASES[subcommand]
|
|
subcommand = ALIASES[subcommand]
|
|
end
|
|
command_function = "cmd_#{subcommand}".to_sym
|
|
if private_methods.include?(command_function)
|
|
__send__(command_function, params)
|
|
else
|
|
$stderr.puts "Unknown command #{subcommand}"
|
|
1
|
|
end
|
|
end
|
|
|
|
def cmd_checkout(params)
|
|
options = {}
|
|
opts, args = Yawpa.parse(params, options, posix_order: true)
|
|
if args.size < 1
|
|
$stderr.puts "Error: must specify URL"
|
|
return 1
|
|
end
|
|
url, = args
|
|
@application.checkout(url)
|
|
end
|
|
|
|
def cmd_status(params)
|
|
options = {}
|
|
opts, args = Yawpa.parse(params, options, posix_order: true)
|
|
@application.status
|
|
end
|
|
|
|
end
|
|
end
|