commands/version: use checkpoint data

This commit is contained in:
Mitchell Hashimoto 2014-09-01 15:23:46 -07:00
parent 09d2b6fd86
commit 140a1b8d4b
4 changed files with 29 additions and 24 deletions

View File

@ -130,10 +130,24 @@ module Vagrant
# initialization. The cache file will cause this to mostly be a no-op # initialization. The cache file will cause this to mostly be a no-op
# most of the time. # most of the time.
@checkpoint_thr = Thread.new do @checkpoint_thr = Thread.new do
@checkpoint_result = Checkpoint.check( Thread.current[:result] = nil
# If we disabled checkpoint via env var, don't run this
if ENV["VAGRANT_CHECKPOINT_DISABLE"].to_s != ""
next
end
# If we disabled state and knowing what alerts we've seen, then
# disable the signature file.
signature_file = @data_dir.join("checkpoint_signature")
if ENV["VAGRANT_CHECKPOINT_NO_STATE"].to_s != ""
signature_file = nil
end
Thread.current[:result] = Checkpoint.check(
product: "vagrant", product: "vagrant",
version: VERSION, version: VERSION,
signature_file: @data_dir.join("checkpoint_signature"), signature_file: signature_file,
cache_file: @data_dir.join("checkpoint_cache"), cache_file: @data_dir.join("checkpoint_cache"),
) )
end end
@ -263,7 +277,7 @@ module Vagrant
# @return [Hash] # @return [Hash]
def checkpoint def checkpoint
@checkpoint_thr.join @checkpoint_thr.join
return @checkpoint_result return @checkpoint_thr[:result]
end end
# Makes a call to the CLI with the given arguments as if they # Makes a call to the CLI with the given arguments as if they

View File

@ -38,25 +38,6 @@ module Vagrant
ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"] ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]
end end
# Returns the latest version of Vagrant that is available.
#
# This makes an HTTP call.
#
# @return [String]
def self.latest_version
# Lazy-require this so that the overhead of this file is low
require "vagrant/util/downloader"
tf = Tempfile.new("vagrant")
tf.close
url = "http://www.vagrantup.com/latest-version.json"
Vagrant::Util::Downloader.new(url, tf.path).download!
data = JSON.parse(File.read(tf.path))
data["version"]
ensure
tf.unlink if tf
end
# This returns whether or not 3rd party plugins should be loaded. # This returns whether or not 3rd party plugins should be loaded.
# #
# @return [Boolean] # @return [Boolean]

View File

@ -22,8 +22,15 @@ module VagrantPlugins
"vagrant.version_current", version: Vagrant::VERSION)) "vagrant.version_current", version: Vagrant::VERSION))
@env.ui.machine("version-installed", Vagrant::VERSION) @env.ui.machine("version-installed", Vagrant::VERSION)
# Load the latest version # Load the latest information
latest = Vagrant.latest_version cp = @env.checkpoint
if !cp
@env.ui.output("\n"+I18n.t(
"vagrant.version_no_checkpoint"))
return 0
end
latest = cp["current_version"]
# Output latest version # Output latest version
@env.ui.output(I18n.t( @env.ui.output(I18n.t(

View File

@ -229,6 +229,9 @@ en:
Latest Version: %{version} Latest Version: %{version}
version_latest_installed: |- version_latest_installed: |-
You're running an up-to-date version of Vagrant! You're running an up-to-date version of Vagrant!
version_no_checkpoint: |-
Vagrant was unable to check for the latest version of Vagrant.
Please check manually at http://www.vagrantup.com
version_upgrade_howto: |- version_upgrade_howto: |-
To upgrade to the latest version, visit the downloads page and To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL download and install the latest version of Vagrant from the URL