Class: MultiRepo::ConfigFile

Inherits:
Object
  • Object
show all
Defined in:
lib/multirepo/files/config-file.rb

Constant Summary collapse

FILENAME =
".multirepo"

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ConfigFile

Returns a new instance of ConfigFile.



10
11
12
# File 'lib/multirepo/files/config-file.rb', line 10

def initialize(path)
  @path = path
end

Instance Method Details

#add_entry(entry) ⇒ Object



40
41
42
# File 'lib/multirepo/files/config-file.rb', line 40

def add_entry(entry)
  save_entries(load_entries.push(entry))
end

#ensure_access(file, error_message, &check) ⇒ Object



48
49
50
# File 'lib/multirepo/files/config-file.rb', line 48

def ensure_access(file, error_message, &check)
  fail MultiRepoException, error_message if File.exists?(file) && !check.call(File.stat(file))
end

#entry_exists?(entry) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/multirepo/files/config-file.rb', line 36

def entry_exists?(entry)
  load_entries.any? { |e| e == entry }
end

#exists?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/multirepo/files/config-file.rb', line 22

def exists?
  File.exist?(file)
end

#fileObject



14
15
16
# File 'lib/multirepo/files/config-file.rb', line 14

def file
  File.join(@path, FILENAME)
end

#filenameObject



18
19
20
# File 'lib/multirepo/files/config-file.rb', line 18

def filename
  FILENAME
end

#load_entriesObject



26
27
28
29
# File 'lib/multirepo/files/config-file.rb', line 26

def load_entries
  ensure_access(file, "Can't read config file (permissions)") { |stat| stat.readable? }
  Psych.load(File.read(file))
end

#remove_entry(entry) ⇒ Object



44
45
46
# File 'lib/multirepo/files/config-file.rb', line 44

def remove_entry(entry)
  save_entries(load_entries.delete_if { |e| e == entry })
end

#save_entries(entries) ⇒ Object



31
32
33
34
# File 'lib/multirepo/files/config-file.rb', line 31

def save_entries(entries)
  ensure_access(file, "Can't write config file (permissions)") { |stat| stat.writable? }
  File.write(file, Psych.dump(entries))
end