blob: b7eb6a6e56ca11dba99c935d5549613e7e61f465 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# frozen_string_literal: true
require "bundler/cli/common"
module Bundler
class CLI::Info
attr_reader :gem_name, :options
def initialize(options, gem_name)
@options = options
@gem_name = gem_name
end
def run
Bundler.ui.silence do
Bundler.definition.validate_runtime!
Bundler.load.lock
end
spec = Bundler::CLI::Common.select_spec(gem_name, :regex_match)
return print_gem_info(spec) if spec
end
private
def print_gem_info(spec)
desc = " * #{spec.name} (#{spec.version}#{spec.git_version})"
latest = fetch_latest_specs.find {|l| l.name == spec.name }
Bundler.ui.info <<-END.gsub(/^ +/, "")
#{desc}
\tSummary: #{spec.summary || "No description available."}
\tHomepage: #{spec.homepage || "No website available."}
\tStatus: #{outdated?(spec, latest) ? "Outdated - #{spec.version} < #{latest.version}" : "Up to date"}
\tPath: #{spec.full_gem_path}
END
end
def fetch_latest_specs
definition = Bundler.definition(true)
definition.resolve_remotely!
definition.specs
end
def outdated?(current, latest)
return false unless latest
Gem::Version.new(current.version) < Gem::Version.new(latest.version)
end
end
end
|