beginrequire'travis/client'rescueLoadError=>eife.message=='no such file to load -- json'$stderr.puts"You should either run `gem install json` or upgrade your Ruby version!"exit1elseraiseeendendrequire'stringio'moduleTravismoduleCLIautoload:Token,'travis/cli/token'autoload:ApiCommand,'travis/cli/api_command'autoload:Accounts,'travis/cli/accounts'autoload:Branches,'travis/cli/branches'autoload:Cancel,'travis/cli/cancel'autoload:Command,'travis/cli/command'autoload:Console,'travis/cli/console'autoload:Disable,'travis/cli/disable'autoload:Enable,'travis/cli/enable'autoload:Encrypt,'travis/cli/encrypt'autoload:Endpoint,'travis/cli/endpoint'autoload:Help,'travis/cli/help'autoload:History,'travis/cli/history'autoload:Init,'travis/cli/init'autoload:Login,'travis/cli/login'autoload:Logs,'travis/cli/logs'autoload:Monitor,'travis/cli/monitor'autoload:Open,'travis/cli/open'autoload:Parser,'travis/cli/parser'autoload:Pubkey,'travis/cli/pubkey'autoload:Raw,'travis/cli/raw'autoload:RepoCommand,'travis/cli/repo_command'autoload:Restart,'travis/cli/restart'autoload:Setup,'travis/cli/setup'autoload:Show,'travis/cli/show'autoload:Status,'travis/cli/status'autoload:Sync,'travis/cli/sync'autoload:Version,'travis/cli/version'autoload:Whatsup,'travis/cli/whatsup'autoload:Whoami,'travis/cli/whoami'extendselfdefrun(*args)args,opts=preparse(args)name=args.shiftunlessargs.empty?command=command(name).new(opts)command.parse(args)command.executeenddefcommand(name)const_name=command_name(name)constant=CLI.const_get(const_name)ifconst_name=~/^[A-Z][a-z]+$/andconst_defined?const_nameifcommand?constantconstantelse$stderr.puts"unknown command #{name}"exit1endenddefcommandsCLI.constants.map{|n|CLI.const_get(n)}.select{|c|command?c}enddefsilentstderr,$stderr=$stderr,dummy_iostdout,$stdout=$stdout,dummy_ioyieldensure$stderr=stderrifstderr$stdout=stdoutifstdoutendprivatedefdummy_ioreturnStringIO.newunlessdefined?IO::NULLandIO::NULLFile.open(IO::NULL,'w')enddefcommand?(constant)constantandconstant<Commandandnotconstant.abstract?enddefcommand_name(name)casenamewhennil,'-h','-?'then'Help'when'-v'then'Version'when/^--/thencommand_name(name[2..-1])elsename.to_s.capitalizeendend# can't use flatten as it will flatten hashesdefpreparse(unparsed,args=[],opts={})caseunparsedwhenHashthenopts.merge!unparsedwhenArraythenunparsed.each{|e|preparse(e,args,opts)}elseargs<<unparsed.to_send[args,opts]endendend