38 lines
1005 B
Ruby
Raw Normal View History

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"
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