Module: Babushka::UriHelpers

Included in:
BaseDepRunner
Defined in:
lib/babushka/helpers/uri_helpers.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) handle_source(uri, &block)



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/babushka/helpers/uri_helpers.rb', line 23

def handle_source uri, &block
  uri = uri_processor(:parse).call(uri) unless uri.is_a?(URI)
  case uri.scheme
  when 'git'
    git uri, &block
  when 'http', 'https', 'ftp', nil # We let `curl` work out the protocol if it's nil.
    Resource.extract uri, &block
  else
    log_error "Babushka can't handle #{uri.scheme}:// URLs yet. But it can if you write a patch! :)"
  end
end

- (Object) parse_uris



9
10
11
12
# File 'lib/babushka/helpers/uri_helpers.rb', line 9

def parse_uris
  @uris = source.map(&uri_processor(:escape)).map(&uri_processor(:parse))
  @extra_uris = extra_source.map(&uri_processor(:escape)).map(&uri_processor(:parse)) if respond_to?(:extra_source)
end

- (Object) process_sources(&block)



18
19
20
21
# File 'lib/babushka/helpers/uri_helpers.rb', line 18

def process_sources &block
  @extra_uris.each {|uri| handle_source uri } unless @extra_uris.nil?
  @uris.all? {|uri| handle_source uri, &block } unless @uris.nil?
end

- (Object) setup_source_uris



4
5
6
7
# File 'lib/babushka/helpers/uri_helpers.rb', line 4

def setup_source_uris
  parse_uris
  requires_when_unmet(@uris.map(&:scheme).uniq & %w[ git ])
end

- (Object) uri_processor(method_name)



14
15
16
# File 'lib/babushka/helpers/uri_helpers.rb', line 14

def uri_processor(method_name)
  L{|uri| URI.send(method_name, uri.respond_to?(:call) ? uri.call : uri.to_s) }
end