Class: Manifestly::ManifestItem

Inherits:
Object
  • Object
show all
Defined in:
lib/manifestly/manifest_item.rb

Defined Under Namespace

Classes: InvalidManifestItem, MultipleSameNameRepositories, RepositoryNotFound

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository) ⇒ ManifestItem

Returns a new instance of ManifestItem.



8
9
10
11
# File 'lib/manifestly/manifest_item.rb', line 8

def initialize(repository)
  @repository = repository
  @commit = repository.current_commit
end

Instance Attribute Details

#commitObject

Returns the value of attribute commit.



55
56
57
# File 'lib/manifestly/manifest_item.rb', line 55

def commit
  @commit
end

#repositoryObject (readonly)

Returns the value of attribute repository.



56
57
58
# File 'lib/manifestly/manifest_item.rb', line 56

def repository
  @repository
end

Class Method Details

.from_file_string(string, repositories) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/manifestly/manifest_item.rb', line 37

def self.from_file_string(string, repositories)
  repo_name, sha = string.split('@').collect(&:strip)
  raise(InvalidManifestItem, string) if repo_name.blank? || sha.blank?

  matching_repositories = repositories.select do |repo|
    repo.display_name == repo_name
  end

  raise(MultipleSameNameRepositories, repo_name) if matching_repositories.size > 1
  raise(RepositoryNotFound, repo_name) if matching_repositories.empty?

  repository = matching_repositories.first

  item = ManifestItem.new(repository)
  item.set_commit_by_sha(sha)
  item
end

Instance Method Details

#checkout_commit!(fetch_if_unfound = false) ⇒ Object



29
30
31
# File 'lib/manifestly/manifest_item.rb', line 29

def checkout_commit!(fetch_if_unfound=false)
  @repository.checkout_commit(@commit.sha, fetch_if_unfound)
end

#fetchObject



25
26
27
# File 'lib/manifestly/manifest_item.rb', line 25

def fetch
  @repository.fetch
end

#repository_nameObject



13
14
15
# File 'lib/manifestly/manifest_item.rb', line 13

def repository_name
  @repository.display_name
end

#set_commit_by_index(index) ⇒ Object



17
18
19
# File 'lib/manifestly/manifest_item.rb', line 17

def set_commit_by_index(index)
  @commit = @repository.commits[index]
end

#set_commit_by_sha(sha) ⇒ Object



21
22
23
# File 'lib/manifestly/manifest_item.rb', line 21

def set_commit_by_sha(sha)
  @commit = @repository.find_commit(sha)
end

#to_file_stringObject



33
34
35
# File 'lib/manifestly/manifest_item.rb', line 33

def to_file_string
  "#{repository_name} @ #{commit.sha}"
end