65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module Hbc
 | |
|   class CLI
 | |
|     class InternalAppcastCheckpoint < AbstractInternalCommand
 | |
|       option "--calculate", :calculate, false
 | |
| 
 | |
|       def initialize(*)
 | |
|         super
 | |
|         raise CaskUnspecifiedError if args.empty?
 | |
|       end
 | |
| 
 | |
|       def run
 | |
|         if args.all? { |t| t =~ %r{^https?://} && t !~ /\.rb$/ }
 | |
|           self.class.appcask_checkpoint_for_url(args)
 | |
|         else
 | |
|           self.class.appcask_checkpoint(args, calculate?)
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def self.appcask_checkpoint_for_url(urls)
 | |
|         urls.each do |url|
 | |
|           appcast = DSL::Appcast.new(url)
 | |
|           puts appcast.calculate_checkpoint[:checkpoint]
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def self.appcask_checkpoint(cask_tokens, calculate)
 | |
|         count = 0
 | |
| 
 | |
|         cask_tokens.each do |cask_token|
 | |
|           cask = CaskLoader.load(cask_token)
 | |
| 
 | |
|           if cask.appcast.nil?
 | |
|             opoo "Cask '#{cask}' is missing an `appcast` stanza."
 | |
|           else
 | |
|             if calculate
 | |
|               result = cask.appcast.calculate_checkpoint
 | |
| 
 | |
|               checkpoint = result[:checkpoint]
 | |
|             else
 | |
|               checkpoint = cask.appcast.checkpoint
 | |
|             end
 | |
| 
 | |
|             if checkpoint.nil?
 | |
|               onoe "Could not retrieve `appcast` checkpoint for cask '#{cask}': #{result[:command_result].stderr}"
 | |
|             else
 | |
|               puts((cask_tokens.count > 1) ? "#{checkpoint}  #{cask}" : checkpoint)
 | |
|               count += 1
 | |
|             end
 | |
|           end
 | |
|         end
 | |
| 
 | |
|         count == cask_tokens.count
 | |
|       end
 | |
| 
 | |
|       def self.help
 | |
|         "prints or calculates a given Cask's or URL's appcast checkpoint"
 | |
|       end
 | |
| 
 | |
|       def self.needs_init?
 | |
|         true
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
