Class: VagrantPlugins::Openstack::VersionChecker

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/vagrant-openstack-illuin-provider/version_checker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVersionChecker

Returns a new instance of VersionChecker.



19
20
21
# File 'lib/vagrant-openstack-illuin-provider/version_checker.rb', line 19

def initialize
  @status = nil
end

Instance Attribute Details

#statusObject

:latest, :outdated or :unstable

A version is considered unstable if it does not respect the pattern or if it is greater than the latest from rubygem



17
18
19
# File 'lib/vagrant-openstack-illuin-provider/version_checker.rb', line 17

def status
  @status
end

Instance Method Details

#checkObject

Check the latest version from rubygem and set the status



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/vagrant-openstack-illuin-provider/version_checker.rb', line 26

def check
  return @status unless @status.nil?
  latest  = Gem.latest_spec_for('vagrant-openstack-illuin-provider').version.version
  current = VagrantPlugins::Openstack::VERSION

  unless current =~ VERSION_PATTERN
    @status = :unstable
    print I18n.t('vagrant_openstack.version_unstable')
    return
  end

  if latest.eql? current
    @status = :latest
    return
  end

  v_latest = latest.split('.').map(&:to_i)
  v_current = current.split('.').map(&:to_i)

  i_latest = v_latest[2] + v_latest[1] * 1000 + v_latest[0] * 1_000_000
  i_current = v_current[2] + v_current[1] * 1000 + v_current[0] * 1_000_000

  if i_current > i_latest
    @status = :unstable
    print I18n.t('vagrant_openstack.version_unstable')
    return
  end

  @status = :outdated
  print I18n.t('vagrant_openstack.version_outdated', latest: latest, current: current)
end