Class: MockVersion::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/mockversion/repository.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Repository

Returns a new instance of Repository.



25
26
27
28
# File 'lib/mockversion/repository.rb', line 25

def initialize(path)
  @repo_path = path
  @revisions = [Revision.new]
end

Class Method Details

.create(path) ⇒ Object



7
8
9
# File 'lib/mockversion/repository.rb', line 7

def self.create(path)
  new(path).save
end

.load_from_path(path) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/mockversion/repository.rb', line 15

def self.load_from_path(path)
  begin
    repo = new(path)
    YAML.load_file(repo.repo_file)
  rescue
    puts "Can't open"
    exit 1
  end
end

.verify(path) ⇒ Object



11
12
13
# File 'lib/mockversion/repository.rb', line 11

def self.verify(path)
  load_from_path(path).verify
end

Instance Method Details

#add_revision(revision) ⇒ Object



49
50
51
52
# File 'lib/mockversion/repository.rb', line 49

def add_revision(revision)
  @revisions << revision
  save
end

#checkout_to(path) ⇒ Object



34
35
36
37
# File 'lib/mockversion/repository.rb', line 34

def checkout_to(path)
  WorkingCopy.create(@repo_path, path)
  @revisions.last.export_to(path)
end

#create_new_revision(number = '1') ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/mockversion/repository.rb', line 54

def create_new_revision(number = '1')
  last_lower_revision = last_revision_lower_than(number)
  new_revision = last_lower_revision.dup
  new_revision.files = last_lower_revision.files.dup
  new_revision.number = number
  add_revision(new_revision)
  new_revision
end

#export_revision_to_path(revision_id, path) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/mockversion/repository.rb', line 39

def export_revision_to_path(revision_id, path)
  if revision_id == "HEAD"
    revision = @revisions.last
  else
    revision = @revisions.find { |revision| revision.number == revision_id }
  end
  
  revision.export_to(path)
end

#full_repo_pathObject



72
73
74
# File 'lib/mockversion/repository.rb', line 72

def full_repo_path
  ".mockversion/#{@repo_path}"
end

#last_revision_lower_than(number) ⇒ Object



63
64
65
# File 'lib/mockversion/repository.rb', line 63

def last_revision_lower_than(number)
  @revisions.find_all { |revision| revision.number < number }.last
end

#repo_fileObject



76
77
78
# File 'lib/mockversion/repository.rb', line 76

def repo_file
  "#{full_repo_path}/repo.yml"
end

#saveObject



67
68
69
70
# File 'lib/mockversion/repository.rb', line 67

def save
  FileUtils.makedirs(full_repo_path)
  File.open(repo_file, "w") { |file| file.puts to_yaml }      
end

#verifyObject



30
31
32
# File 'lib/mockversion/repository.rb', line 30

def verify
  puts @revisions.map { |revision| "* Verified revision #{revision.number}.\n" }
end