Class: LibyearBundler::Models::Gem
- Inherits:
-
Object
- Object
- LibyearBundler::Models::Gem
- Defined in:
- lib/libyear_bundler/models/gem.rb
Overview
Logic and information pertaining to the installed and newest versions of a gem
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(name, installed_version, newest_version, release_date_cache) ⇒ Gem
constructor
A new instance of Gem.
- #installed_version ⇒ Object
- #installed_version_release_date ⇒ Object
- #installed_version_sequence_index ⇒ Object
- #libyears ⇒ Object
- #name ⇒ Object
- #newest_version ⇒ Object
- #newest_version_release_date ⇒ Object
- #newest_version_sequence_index ⇒ Object
- #version_number_delta ⇒ Object
- #version_sequence_delta ⇒ Object
Constructor Details
#initialize(name, installed_version, newest_version, release_date_cache) ⇒ Gem
Returns a new instance of Gem.
10 11 12 13 14 15 16 17 18 |
# File 'lib/libyear_bundler/models/gem.rb', line 10 def initialize(name, installed_version, newest_version, release_date_cache) unless release_date_cache.nil? || release_date_cache.is_a?(ReleaseDateCache) raise TypeError, 'Invalid release_date_cache' end @name = name @installed_version = installed_version @newest_version = newest_version @release_date_cache = release_date_cache end |
Class Method Details
.release_date(gem_name, gem_version) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/libyear_bundler/models/gem.rb', line 21 def release_date(gem_name, gem_version) dep = nil begin dep = ::Bundler::Dependency.new(gem_name, gem_version) rescue ::Gem::Requirement::BadRequirementError => e $stderr.puts "Could not find release date for: #{gem_name}" $stderr.puts(e) $stderr.puts( "Maybe you used git in your Gemfile, which libyear doesn't support " \ "yet. Contributions welcome." ) return nil end tuples, _errors = ::Gem::SpecFetcher.fetcher.search_for_dependency(dep) if tuples.empty? $stderr.puts "Could not find release date for: #{gem_name}" return nil end tup, source = tuples.first # Gem::NameTuple spec = source.fetch_spec(tup) # raises Gem::RemoteFetcher::FetchError spec.date.to_date end |
Instance Method Details
#installed_version ⇒ Object
45 46 47 |
# File 'lib/libyear_bundler/models/gem.rb', line 45 def installed_version ::Gem::Version.new(@installed_version) end |
#installed_version_release_date ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/libyear_bundler/models/gem.rb', line 49 def installed_version_release_date if @release_date_cache.nil? self.class.release_date(name, installed_version) else @release_date_cache[name, installed_version] end end |
#installed_version_sequence_index ⇒ Object
57 58 59 |
# File 'lib/libyear_bundler/models/gem.rb', line 57 def installed_version_sequence_index versions_sequence.index(installed_version.to_s) end |
#libyears ⇒ Object
61 62 63 64 65 66 |
# File 'lib/libyear_bundler/models/gem.rb', line 61 def libyears ::LibyearBundler::Calculators::Libyear.calculate( installed_version_release_date, newest_version_release_date ) end |
#name ⇒ Object
68 69 70 |
# File 'lib/libyear_bundler/models/gem.rb', line 68 def name @name end |
#newest_version ⇒ Object
72 73 74 |
# File 'lib/libyear_bundler/models/gem.rb', line 72 def newest_version ::Gem::Version.new(@newest_version) end |
#newest_version_release_date ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/libyear_bundler/models/gem.rb', line 80 def newest_version_release_date if @release_date_cache.nil? self.class.release_date(name, newest_version) else @release_date_cache[name, newest_version] end end |
#newest_version_sequence_index ⇒ Object
76 77 78 |
# File 'lib/libyear_bundler/models/gem.rb', line 76 def newest_version_sequence_index versions_sequence.index(newest_version.to_s) end |
#version_number_delta ⇒ Object
88 89 90 91 92 93 |
# File 'lib/libyear_bundler/models/gem.rb', line 88 def version_number_delta ::LibyearBundler::Calculators::VersionNumberDelta.calculate( installed_version, newest_version ) end |
#version_sequence_delta ⇒ Object
95 96 97 98 99 100 |
# File 'lib/libyear_bundler/models/gem.rb', line 95 def version_sequence_delta ::LibyearBundler::Calculators::VersionSequenceDelta.calculate( installed_version_sequence_index, newest_version_sequence_index ) end |