moduleXcodeprojrequire'colored'classCommandautoload:TargetDiff,'xcodeproj/command/target_diff'autoload:ProjectDiff,'xcodeproj/command/project_diff'autoload:Show,'xcodeproj/command/show'classHelp<StandardErrordefinitialize(command_class,argv,unrecognized_command=nil)@command_class,@argv,@unrecognized_command=command_class,argv,unrecognized_commandenddefmessagemessage=['',@command_class.banner.gsub(/\$ pod (.*)/,'$ pod \1'.green),'','Options:','',options,"\n",].join("\n")message<<"[!] Unrecognized command: `#{@unrecognized_command}'\n".redif@unrecognized_commandmessage<<"[!] Unrecognized argument#{@argv.count>1?'s':''}: `#{@argv.join(' - ')}'\n".redunless@argv.empty?messageendprivatedefoptionsoptions=@command_class.optionskeys=options.map(&:first)key_size=keys.inject(0){|size,key|key.size>size?key.size:size}options.map{|key,desc|" #{key.ljust(key_size)}#{desc}"}.join("\n")endendclassARGV<Arraydefoptions;select{|x|x.to_s[0,1]=='-'};enddefarguments;self-options;enddefoption(name);!!delete(name);enddefshift_argument;(arg=arguments[0])&&delete(arg);endenddefself.bannercommands=['target-diff','project-diff','show']banner="To see help for the available commands run:\n\n"banner+commands.map{|cmd|" * $ xcodeproj #{cmd.green} --help"}.join("\n")enddefself.options[['--help','Show help information'],# ['--silent', 'Print nothing'],# ['--no-color', 'Print output without color'],# ['--verbose', 'Print more information while working'],['--version','Prints the version of CocoaPods'],]enddefself.run(*argv)sub_command=parse(*argv)sub_command.runrescueInterruptputs"[!] Cancelled".redConfig.instance.verbose??raise:exit(1)rescueException=>eputse.messageputs*e.backtraceexit1enddefself.parse(*argv)argv=ARGV.new(argv)ifargv.option('--version')putsVERSIONexit!(0)endshow_help=argv.option('--help')String.send(:define_method,:colorize){|string,_|string}ifargv.option('--no-color')command_class=casecommand_argument=argv.shift_argumentwhen'target-diff'thenTargetDiffwhen'project-diff'thenProjectDiffwhen'show'thenShowendifcommand_class.nil?raiseHelp.new(self,argv,command_argument)elsifshow_helpraiseHelp.new(command_class,argv)elsecommand_class.new(argv)endenddefinitialize(argv)raiseHelp.new(self.class,argv)enddefxcodeproj_pathunless@xcodeproj_pathprojects=Dir.glob('*.xcodeproj')ifprojects.size==1xcodeproj_path=projects.firstelsifprojects.size>1raiseInformative,'There are more than one Xcode project documents '\'in the current working directory. Please specify '\'which to use with the `--project` option.'elseraiseInformative,'No Xcode project document found in the current '\'working directory. Please specify which to use '\'with the `--project` option.'end@xcodeproj_path=File.expand_path(xcodeproj_path)end@xcodeproj_pathenddefxcodeproj@xcodeproj||=Project.new(xcodeproj_path)endendend