lib/svelte_on_rails/installer/gem_utils.rb



module SvelteOnRails

  module GemUtils

    def self.check_gem_version(gem_name)
      gl = File.read(Rails.root.join('Gemfile.lock'))
      regex = /(?<=#{Regexp.escape(gem_name)})[<>=\(~0-9\. \),]+/
      match = gl.match(regex)

      if match
        match.to_s.gsub('(','').gsub(')','').strip
      end

    end

    def self.install_gem(gem_name, group: nil)
      v = check_gem_version(gem_name)
      if v
        puts "Gem #{gem_name} already installed, version: #{v} "
      else
        cmd = [
          "bundle add #{gem_name}",
          (group ? "--group=#{group}" : nil)
        ].compact.join(' ')
        stdout, stderr, status = Open3.capture3(cmd)
        if stderr.present?
          raise stderr
        else
          puts "Installed #{gem_name} version #{check_gem_version(gem_name)}"
        end
      end
    end


  end
end