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.
110 111 112 113 114 115 116 |
# File 'lib/gel/gemfile_parser.rb', line 110 def initialize(filename) @filename = filename @sources = [] @git_sources = {} @ruby = [] @gems = [] end |
Instance Attribute Details
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
102 103 104 |
# File 'lib/gel/gemfile_parser.rb', line 102 def filename @filename end |
#gems ⇒ Object (readonly)
Returns the value of attribute gems.
108 109 110 |
# File 'lib/gel/gemfile_parser.rb', line 108 def gems @gems end |
#git_sources ⇒ Object (readonly)
Returns the value of attribute git_sources.
105 106 107 |
# File 'lib/gel/gemfile_parser.rb', line 105 def git_sources @git_sources end |
#ruby ⇒ Object (readonly)
Returns the value of attribute ruby.
106 107 108 |
# File 'lib/gel/gemfile_parser.rb', line 106 def ruby @ruby end |
#sources ⇒ Object (readonly)
Returns the value of attribute sources.
104 105 106 |
# File 'lib/gel/gemfile_parser.rb', line 104 def sources @sources end |
Instance Method Details
#add_gem(name, requirements, options) ⇒ Object
131 132 133 134 135 136 137 |
# File 'lib/gel/gemfile_parser.rb', line 131 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
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/gel/gemfile_parser.rb', line 139 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
118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/gel/gemfile_parser.rb', line 118 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 |