class Gemdiff::OutdatedGem

Constants

LIST_NO_V

gems that tag releases with tag names like 1.2.3 keep it alphabetical

Attributes

name[R]
new_version[R]
old_version[R]

Public Class Methods

new(name, old_version = nil, new_version = nil) click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 37
def initialize(name, old_version = nil, new_version = nil)
  @name = find_name(name)
  set_versions old_version, new_version
end

Public Instance Methods

commits_url() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 70
def commits_url
  clean_url "#{repo}/commits/main"
end
compare() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 90
def compare
  open_url(compare_url) if repo?
end
compare_message() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 74
def compare_message
  "#{name}: #{new_version} > #{old_version}"
end
compare_url() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 78
def compare_url
  clean_url "#{repo}/compare/#{compare_part}"
end
load_bundle_versions() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 50
def load_bundle_versions
  outdated_gem = BundleInspector.new.get(@name)
  return false if outdated_gem.nil?
  @old_version ||= outdated_gem.old_version
  @new_version ||= outdated_gem.new_version
  true
end
main() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 82
def main
  open_url(commits_url) if repo?
end
missing_versions?() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 46
def missing_versions?
  @old_version.nil? || @new_version.nil?
end
open() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 94
def open
  open_url(repo) if repo?
end
releases() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 86
def releases
  open_url(releases_url) if repo?
end
releases_url() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 66
def releases_url
  clean_url "#{repo}/releases"
end
repo() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 58
def repo
  @repo ||= RepoFinder.github_url(@name)
end
repo?() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 62
def repo?
  repo
end
set_versions(v_old, v_new) click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 42
def set_versions(v_old, v_new)
  @old_version, @new_version = old_new(v_old, v_new)
end

Private Instance Methods

clean_url(url) click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 106
def clean_url(url)
  uri = URI.parse(url)
  uri.path.gsub! %r{/+}, "/"
  uri.to_s
end
compare_part() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 118
def compare_part
  if compare_type == :no_v
    "#{old_version}...#{new_version}"
  else
    # if the new version is not a number, assume it is a branch name
    # and drop the 'v'
    prefix = (new_version[0] =~ /^[0-9]/) == 0 ? "v" : ""
    "v#{old_version}...#{prefix}#{new_version}"
  end
end
compare_type() click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 129
def compare_type
  if LIST_NO_V.include?(@name)
    :no_v
  else
    :default
  end
end
find_name(name) click to toggle source

When “.”, use the name of the current directory

# File lib/gemdiff/outdated_gem.rb, line 101
def find_name(name)
  return File.basename(Dir.getwd) if name == "."
  name
end
old_new(v_old, v_new) click to toggle source

swap versions if needed

# File lib/gemdiff/outdated_gem.rb, line 138
def old_new(v_old, v_new)
  return [v_old, v_new] unless v_old && v_new
  if v_old == "main" || (Gem::Version.new(v_old) > Gem::Version.new(v_new))
    [v_new, v_old]
  else
    [v_old, v_new]
  end
rescue ArgumentError
  [v_old, v_new]
end
open_url(url) click to toggle source
# File lib/gemdiff/outdated_gem.rb, line 112
def open_url(url)
  Launchy.open(url) do |exception|
    warn "Could not open #{url} because #{exception}"
  end
end