Class: Embryo::Gemfile

Inherits:
Object
  • Object
show all
Defined in:
lib/embryo/gemfile.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, generator: nil) ⇒ Gemfile

Returns a new instance of Gemfile.



5
6
7
8
9
# File 'lib/embryo/gemfile.rb', line 5

def initialize(path, generator: nil)
  @path = path
  @generator = generator
  @data = File.exist?(path) ? File.read(path) : ""
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



3
4
5
# File 'lib/embryo/gemfile.rb', line 3

def data
  @data
end

#pathObject

Returns the value of attribute path.



3
4
5
# File 'lib/embryo/gemfile.rb', line 3

def path
  @path
end

Class Method Details

.current(generator: nil) ⇒ Object



35
36
37
# File 'lib/embryo/gemfile.rb', line 35

def self.current(generator: nil)
  new "Gemfile", generator: generator
end

Instance Method Details

#remove_gem(name) ⇒ Object



25
26
27
28
29
# File 'lib/embryo/gemfile.rb', line 25

def remove_gem(name)
  @data = @data.each_line.reject do |line|
    line.match(/ *gem +'#{name}'/) or line.match(/ *gem +"#{name}"/)
  end.join
end

#remove_noiseObject



11
12
13
14
15
# File 'lib/embryo/gemfile.rb', line 11

def remove_noise
  @data = @data.each_line.select { |line| line[0] != "#" }.join
  @data.gsub!(/\n\n+/, "\n\n")
  @data.gsub!(/\n+$/, "\n")
end

#require_gem(name, version, options = {}) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/embryo/gemfile.rb', line 17

def require_gem(name, version, options = {})
  remove_gem name
  @data << "\n" unless @data[-1] == "\n"
  @data << "gem '#{name}', '#{version}'"
  options.each { |key, value| @data << ", #{key}: #{value.inspect}" }
  @data << "\n"
end

#write(force: false) ⇒ Object



31
32
33
# File 'lib/embryo/gemfile.rb', line 31

def write(force: false)
  @generator.create_file path, data, force: force
end