Class: Gel::GemfileParser::GemfileContent
- Inherits:
-
Object
- Object
- Gel::GemfileParser::GemfileContent
- Defined in:
- lib/gel/gemfile_parser.rb
Instance Attribute Summary collapse
-
#filename ⇒ Object
readonly
Returns the value of attribute filename.
-
#gems ⇒ Object
readonly
Returns the value of attribute gems.
-
#git_sources ⇒ Object
readonly
Returns the value of attribute git_sources.
-
#ruby ⇒ Object
readonly
Returns the value of attribute ruby.
-
#sources ⇒ Object
readonly
Returns the value of attribute sources.
Instance Method Summary collapse
- #add_gem(name, requirements, options) ⇒ Object
- #autorequire(target, gems = self.gems) ⇒ Object
- #flatten(options, stack) ⇒ Object
-
#initialize(filename) ⇒ GemfileContent
constructor
A new instance of GemfileContent.
Constructor Details
#initialize(filename) ⇒ GemfileContent
Returns a new instance of GemfileContent.
92 93 94 95 96 97 98 |
# File 'lib/gel/gemfile_parser.rb', line 92 def initialize(filename) @filename = filename @sources = [] @git_sources = {} @ruby = [] @gems = [] end |
Instance Attribute Details
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
84 85 86 |
# File 'lib/gel/gemfile_parser.rb', line 84 def filename @filename end |
#gems ⇒ Object (readonly)
Returns the value of attribute gems.
90 91 92 |
# File 'lib/gel/gemfile_parser.rb', line 90 def gems @gems end |
#git_sources ⇒ Object (readonly)
Returns the value of attribute git_sources.
87 88 89 |
# File 'lib/gel/gemfile_parser.rb', line 87 def git_sources @git_sources end |
#ruby ⇒ Object (readonly)
Returns the value of attribute ruby.
88 89 90 |
# File 'lib/gel/gemfile_parser.rb', line 88 def ruby @ruby end |
#sources ⇒ Object (readonly)
Returns the value of attribute sources.
86 87 88 |
# File 'lib/gel/gemfile_parser.rb', line 86 def sources @sources end |
Instance Method Details
#add_gem(name, requirements, options) ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/gel/gemfile_parser.rb', line 113 def add_gem(name, requirements, ) return if name == "bundler" raise "Only git sources can specify a :branch" if [:branch] && ![:git] raise "Duplicate entry for gem #{name.inspect}" if @gems.assoc(name) @gems << [name, requirements, ] end |
#autorequire(target, gems = self.gems) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/gel/gemfile_parser.rb', line 121 def autorequire(target, gems = self.gems) gems.each do |name, _version, | next if [:require] == false if [nil, true].include?([:require]) alt_name = name.include?("-") && name.tr("-", "/") if target.gem_has_file?(name, name) target.scoped_require name, name elsif alt_name && target.gem_has_file?(name, alt_name) target.scoped_require name, alt_name elsif [:require] == true target.scoped_require name, name end elsif [:require].is_a?(Array) [:require].each do |path| target.scoped_require name, path end else target.scoped_require name, [:require] end end end |
#flatten(options, stack) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/gel/gemfile_parser.rb', line 100 def flatten(, stack) = .dup stack.reverse_each do |layer| .update(layer) { |_, current, outer| current } end @git_sources.each do |key, block| next unless .key?(key) raise "Multiple git sources specified" if .key?(:git) [:git] = block.call(.delete(key)) end end |