Class: Kiip::Repository

Inherits:
Hashie::Dash
  • Object
show all
Includes:
Hashie::Extensions::Dash::PropertyTranslation
Defined in:
lib/kiip/repository.rb

Constant Summary collapse

ID_FILE_NAME =
'.kiip_repository'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.get_instance(**options) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/kiip/repository.rb', line 7

def self.get_instance(**options)
  path = ENV['KIIP_REPO'] || raise('KIIP_REPO environment variable not defined')

  options[:path] = %x(echo #{path}).rstrip

  return self.new(**options)
end

Instance Method Details

#create!Object



74
75
76
77
# File 'lib/kiip/repository.rb', line 74

def create!
  FileUtils.mkdir_p(path)
  FileUtils.touch(File.join(path, ID_FILE_NAME))
end

#exists?Boolean

Returns:

  • (Boolean)


20
21
22
23
# File 'lib/kiip/repository.rb', line 20

def exists?
  id_file_path = File.join(path, ID_FILE_NAME)
  File.exists? id_file_path
end

#packagesObject



67
68
69
70
71
72
# File 'lib/kiip/repository.rb', line 67

def packages
  ensure_existance!
  package_names.map do |package_name|
    get_package(package_name)
  end
end

Returns multi-line string with content of the repository.

Returns:

  • (String)

    multi-line string with content of the repository



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/kiip/repository.rb', line 53

def print_content
  ensure_existance!
  StringIO.open do |result|
    packages.each do |package|
      result.puts package.name + ':'
      package.entries.each do |entry|
        result.puts "  #{entry.source} | #{entry.status}"
      end
    end

    result.string
  end
end

#restore(*package_names) ⇒ Object



32
33
34
35
36
37
# File 'lib/kiip/repository.rb', line 32

def restore *package_names
  ensure_existance!
  package_names.each do |name|
    get_package(name).restore
  end
end

#rm(*package_names) ⇒ Object



79
80
81
82
83
84
# File 'lib/kiip/repository.rb', line 79

def rm *package_names
  ensure_existance!
  package_names.each do |package_name|
    get_package(package_name).rm
  end
end

#sync!(*names) ⇒ Object



39
40
41
42
43
# File 'lib/kiip/repository.rb', line 39

def sync! *names
  ensure_existance!
  names = package_names if names.empty?
  names.each { |name| get_package(name).sync! }
end

#track(package_name, path) ⇒ Object



45
46
47
48
49
50
# File 'lib/kiip/repository.rb', line 45

def track package_name, path
  ensure_existance!
  package = get_package(package_name)
  package.create! unless package.exists?
  package.track(path)
end


25
26
27
28
29
30
# File 'lib/kiip/repository.rb', line 25

def unlink *package_names
  ensure_existance!
  package_names.each do |name|
    get_package(name).unlink
  end
end