Class: Ji2p::Package::Gemfile

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

Constant Summary collapse

HEADER =
"# This is a Logstash generated Gemfile.\n" + \
"# If you modify this file manually all comments and formatting will be lost.\n\n"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ Gemfile

Returns a new instance of Gemfile.



13
14
15
16
# File 'lib/ji2p/package/gemfile.rb', line 13

def initialize(io)
  @io = io
  @gemset = nil
end

Instance Attribute Details

#gemsetObject

Returns the value of attribute gemset.



6
7
8
# File 'lib/ji2p/package/gemfile.rb', line 6

def gemset
  @gemset
end

Instance Method Details

#add(name, *requirements) ⇒ Object

Parameters:

  • name (String)

    gem name

  • *requirements

    params following name use the same notation as the Gemfile gem DSL statement

Raises:

  • GemfileError if gem already exists in Gemfile



46
47
48
# File 'lib/ji2p/package/gemfile.rb', line 46

def add(name, *requirements)
  @gemset.add_gem(Gem.parse(name, *requirements))
end

#backupObject



69
70
71
# File 'lib/ji2p/package/gemfile.rb', line 69

def backup
  @original_backup = @gemset.copy
end

#defined_in_gemfile?(name) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/ji2p/package/gemfile.rb', line 77

def defined_in_gemfile?(name)
  @gemset.find_gem(name)
end

#find(name) ⇒ Object



39
40
41
# File 'lib/ji2p/package/gemfile.rb', line 39

def find(name)
  @gemset.find_gem(name)
end

#generateObject



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

def generate
  "#{HEADER}#{gemset.to_s}"
end

#load(with_backup = true) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/ji2p/package/gemfile.rb', line 18

def load(with_backup = true)
  # encoding must be set to UTF-8 here to avoid ending up with Windows-1252 encoding on Windows
  # which will break the DSL instance_eval of that string
  @io.set_encoding(Encoding::UTF_8)
  @gemset ||= DSL.parse(@io.read)
  backup if with_backup
  self
end

#locally_installed_gemsObject



86
87
88
# File 'lib/ji2p/package/gemfile.rb', line 86

def locally_installed_gems
  @gemset.gems.select { |gem| gem.options.include?(:path) }
end

#overwrite(name, *requirements) ⇒ Object

overwrite existing or add new

Parameters:

  • name (String)

    gem name

  • *requirements

    params following name use the same notation as the Gemfile gem DSL statement



60
61
62
# File 'lib/ji2p/package/gemfile.rb', line 60

def overwrite(name, *requirements)
  @gemset.overwrite_gem(Gem.parse(name, *requirements))
end

#remove(name) ⇒ Gem

Returns removed gem or nil if not found.

Returns:

  • (Gem)

    removed gem or nil if not found



65
66
67
# File 'lib/ji2p/package/gemfile.rb', line 65

def remove(name)
  @gemset.remove_gem(name)
end

#restoreObject



73
74
75
# File 'lib/ji2p/package/gemfile.rb', line 73

def restore
  @gemset = @original_backup
end

#restore!Object



81
82
83
84
# File 'lib/ji2p/package/gemfile.rb', line 81

def restore!
  restore
  save
end

#saveObject

Raises:



27
28
29
30
31
32
33
# File 'lib/ji2p/package/gemfile.rb', line 27

def save
  raise(GemfileError, "a Gemfile must first be loaded") unless @gemset
  @io.truncate(0)
  @io.rewind
  @io.write(generate)
  @io.flush
end

#update(name, *requirements) ⇒ Object

update existing or add new and merge passed options with current gem options if it exists

Parameters:

  • name (String)

    gem name

  • *requirements

    params following name use the same notation as the Gemfile gem DSL statement



53
54
55
# File 'lib/ji2p/package/gemfile.rb', line 53

def update(name, *requirements)
  @gemset.update_gem(Gem.parse(name, *requirements))
end