2016-08-18 22:11:42 +03:00
|
|
|
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"
|
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
module Hbc
|
|
|
|
module Source
|
|
|
|
def self.sources
|
|
|
|
[
|
|
|
|
URI,
|
|
|
|
PathSlashRequired,
|
|
|
|
TappedQualified,
|
|
|
|
UntappedQualified,
|
|
|
|
Tapped,
|
|
|
|
PathSlashOptional,
|
|
|
|
Gone,
|
|
|
|
]
|
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
def self.for_query(query)
|
|
|
|
odebug "Translating '#{query}' into a valid Cask source"
|
2016-10-14 20:03:34 +02:00
|
|
|
raise CaskUnavailableError, query if query.to_s =~ /^\s*$/
|
2016-10-23 14:44:14 +02:00
|
|
|
source = sources.find do |s|
|
2016-09-24 13:52:43 +02:00
|
|
|
odebug "Testing source class #{s}"
|
|
|
|
s.me?(query)
|
2016-10-23 14:44:14 +02:00
|
|
|
end
|
2016-09-24 13:52:43 +02:00
|
|
|
raise 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
|
2016-08-18 22:11:42 +03:00
|
|
|
end
|
|
|
|
end
|