Class: Citrus::Core::CachedCodeFetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/citrus/core/cached_code_fetcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cache_root, vcs_adapter = GitAdapter.new, digester = Digest::SHA1) ⇒ CachedCodeFetcher

Returns a new instance of CachedCodeFetcher.



9
10
11
12
13
# File 'lib/citrus/core/cached_code_fetcher.rb', line 9

def initialize(cache_root, vcs_adapter = GitAdapter.new, digester = Digest::SHA1)
  @cache_root  = cache_root
  @vcs_adapter = vcs_adapter
  @digester    = digester
end

Instance Attribute Details

#cache_rootObject (readonly)

Returns the value of attribute cache_root.



7
8
9
# File 'lib/citrus/core/cached_code_fetcher.rb', line 7

def cache_root
  @cache_root
end

#digesterObject (readonly)

Returns the value of attribute digester.



7
8
9
# File 'lib/citrus/core/cached_code_fetcher.rb', line 7

def digester
  @digester
end

#vcs_adapterObject (readonly)

Returns the value of attribute vcs_adapter.



7
8
9
# File 'lib/citrus/core/cached_code_fetcher.rb', line 7

def vcs_adapter
  @vcs_adapter
end

Instance Method Details

#fetch(changeset, destination) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/citrus/core/cached_code_fetcher.rb', line 15

def fetch(changeset, destination)
  url  = changeset.repository_url
  head = changeset.head
  cache_dir = File.join(cache_root, digester.hexdigest(url))
  FileUtils.mkpath(cache_dir)
  update_cache(url, cache_dir)
  vcs_adapter.clone_repository(cache_dir, destination)
  vcs_adapter.checkout(destination, head)
end