Runner class for argument dispatching
Public Instance methods
run
(args)
Subtle::Sur::Runner::run {{{
Start runner
@param [Array] args Argument array
@raise [String] Command error @since 0.0
Subtle::Sur::Runner.new.run(args) => nil
[show source]
# File data/sur/runner.rb, line 34 def run(args) # Default options @repo = "local" @version = nil @port = 4567 @use_tags = false @use_color = true @use_regex = false @reload = false @assume = false @config = [] # GetoptLong only works on ARGV so we use something own begin idx = 0 no_opt = [] while(idx < args.size) case args[idx] # Enable flags when "-l", "--local" then @repo = "local" when "-r", "--remote" then @repo = "remote" when "-c", "--no-color" then @use_color = false when "-e", "--regex" then @use_regex = true when "-t", "--tag" then @use_tags = true when "-R", "--reload" then @reload = true when "-y", "--yes" then @assume = true # Get command help when "-h", "--help" usage(args[0]) exit # Get option arguments when "-v", "--version" idx += 1 @version = args[idx] when "-p", "--port" idx += 1 @port = args[idx].to_i when "-C", "--config" idx += 1 @config << args[idx] # Save other arguments else no_opt << args[idx] end idx += 1 end args = no_opt rescue raise "Cannot find required arguments" end # Run cmd = args.shift case cmd when "annotate" usage(cmd) if args.empty? Subtle::Sur::Client.new.annotate(args.first, @version) when "build" usage(cmd) if args.empty? Subtle::Sur::Client.new.build(args.first) when "config" usage(cmd) if args.empty? Subtle::Sur::Client.new.config(args.first, @use_color) when "fetch" usage(cmd) if args.empty? Subtle::Sur::Client.new.fetch(args, @version, @use_tags) when "grabs" usage(cmd) if args.empty? Subtle::Sur::Client.new.grabs(args.first, @use_color) when "help" then usage(nil) when "info" usage(cmd) if args.empty? Sur::Client.new.info(args, @use_color) when "install" usage(cmd) if args.empty? Sur::Client.new.install(args, @version, @use_tags, @reload) when "list" Subtle::Sur::Client.new.list(@repo, @use_color) when "notes" usage(cmd) if args.empty? Subtle::Sur::Client.new.notes(args.first) when "query" usage(cmd) if args.empty? Subtle::Sur::Client.new.query(args.first, @repo, @version, @use_regex, @use_tags, @use_color ) when "reorder" Subtle::Sur::Client.new.reorder when "server" require "subtle/sur/server" Sur::Server.new(@port).run when "submit" usage(cmd) if args.empty? Subtle::Sur::Client.new.submit(args.first) when "template" usage(cmd) if args.empty? Subtle::Sur::Specification.template(args.first) when "test" usage(cmd) if args.empty? require "subtle/sur/test" Subtle::Sur::Test.run(@config, args) when "uninstall" usage(cmd) if args.empty? Subtle::Sur::Client.new.uninstall(args, @version, @use_tags, @reload) when "unpack" Subtle::Sur::Client.new.unpack(args, @version, @use_tags) when "update" Subtle::Sur::Client.new.update(@repo) when "upgrade" Subtle::Sur::Client.new.upgrade(@use_color, @assume, @reload) when "version" then version when "yank" usage(cmd) if args.empty? Subtle::Sur::Client.new.update(args.first, @version) else usage(nil) end end