module Gemver

Constants

UNKNOWN_VERSION
VERSION

Public Class Methods

add_to_gemfile(text) click to toggle source
# File lib/gemver.rb, line 35
def self.add_to_gemfile(text)
  begin
    puts "#{text} is added to Gemfile"
    file = File.open('Gemfile', 'a+')
    file.write("\n" + text)
  rescue IOError => e
    puts e
  ensure
    file.close unless file.nil?
  end
end
run(gemname) click to toggle source
# File lib/gemver.rb, line 7
def self.run(gemname)
  if gemname.nil?
    puts 'ERR: Please specify gem name! \n `gemver rails` for an example'
    return
  end

  begin
    response = Net::HTTP.get_response(URI("https://rubygems.org/api/v1/versions/#{gemname}/latest.json"))

    unless response.is_a?(Net::HTTPSuccess)
      puts "An error occurs when get gem verions: #{response.header&.message}"
      return
    end

    body = JSON.parse(response.body)
    version = body.fetch('version', UNKNOWN_VERSION)

    if version == UNKNOWN_VERSION
      raise 'Your gem name return an unknown version number. Please verify that the gem exists!'
      return
    end

    self.add_to_gemfile("gem '#{gemname}', '~> #{version}'")
  rescue => e
    puts e
  end
end