38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module Hbc::Source; end
 | |
| 
 | |
| require "hbc/source/gone"
 | |
| require "hbc/source/path_slash_required"
 | |
| require "hbc/source/path_slash_optional"
 | |
| require "hbc/source/tapped_qualified"
 | |
| require "hbc/source/untapped_qualified"
 | |
| require "hbc/source/tapped"
 | |
| require "hbc/source/uri"
 | |
| 
 | |
| module Hbc::Source
 | |
|   def self.sources
 | |
|     [
 | |
|       Hbc::Source::URI,
 | |
|       Hbc::Source::PathSlashRequired,
 | |
|       Hbc::Source::TappedQualified,
 | |
|       Hbc::Source::UntappedQualified,
 | |
|       Hbc::Source::Tapped,
 | |
|       Hbc::Source::PathSlashOptional,
 | |
|       Hbc::Source::Gone,
 | |
|     ]
 | |
|   end
 | |
| 
 | |
|   def self.for_query(query)
 | |
|     odebug "Translating '#{query}' into a valid Cask source"
 | |
|     raise Hbc::CaskUnavailableError, query if query.to_s =~ %r{^\s*$}
 | |
|     source = sources.find { |s|
 | |
|       odebug "Testing source class #{s}"
 | |
|       s.me?(query)
 | |
|     }
 | |
|     raise Hbc::CaskUnavailableError, query unless source
 | |
|     odebug "Success! Using source class #{source}"
 | |
|     resolved_cask_source = source.new(query)
 | |
|     odebug "Resolved Cask URI or file source to '#{resolved_cask_source}'"
 | |
|     resolved_cask_source
 | |
|   end
 | |
| end
 | 
