Sha256: 93df6b6e3e5e1e39965efd0a65e9f4f8c38950f2b31cb517854e8188ef2ea559

Contents?: true

Size: 1.29 KB

Versions: 180

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module Avm
  module EacRubyBase1
    module Bundler
      class Gemfile
        class AddOrReplaceGemLine
          enable_method_class
          common_constructor :sender, :gem_name, :gem_specs
          delegate :lines, to: :sender

          def existing_gem_line_index
            lines.index { |line| line.start_with?(gem_line_prefix) }
          end

          def result
            if existing_gem_line_index.present?
              replace_line
            else
              add_line
            end
          end

          def add_line
            lines.insert(add_line_index, new_gem_line)
          end

          def add_line_index
            (gems_lines_start_index..(lines.count - 1)).each do |e|
              return e if new_gem_line < lines[e]
            end
            lines.count
          end

          def gems_lines_start_index
            lines.index { |line| line.start_with?('gem ') } || lines.count
          end

          def new_gem_line
            ([gem_line_prefix] + gem_specs).join(', ')
          end

          def gem_line_prefix
            "gem '#{gem_name}'"
          end

          def replace_line
            lines[existing_gem_line_index] = new_gem_line
          end
        end
      end
    end
  end
end

Version data entries

180 entries across 180 versions & 3 rubygems

Version Path
avm-eac_ruby_base1-0.35.1 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.96.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.35.0 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.95.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.34.1 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.91.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.34.0 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.91.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.33.1 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.83.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.82.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.81.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.33.0 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.80.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.79.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.32.1 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.78.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
avm-eac_ruby_base1-0.32.0 lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.77.1 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb
eac_tools-0.77.0 sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb