core: add Vagrant.latest_version

This commit is contained in:
Mitchell Hashimoto 2014-04-24 20:09:32 -07:00
parent 63dffe3f92
commit 6870de3f6d
2 changed files with 23 additions and 14 deletions

View File

@ -1,4 +1,5 @@
require "pathname"
require "tempfile"
module Vagrant
# This is the default endpoint of the Vagrant Cloud in
@ -25,6 +26,23 @@ module Vagrant
ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]
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"]
end
# This returns whether or not 3rd party plugins should be loaded.
#
# @return [Boolean]

View File

@ -1,8 +1,5 @@
require "json"
require "optparse"
require "tempfile"
require "vagrant/util/downloader"
module VagrantPlugins
module CommandVersion
@ -25,24 +22,18 @@ module VagrantPlugins
"vagrant.version_current", version: Vagrant::VERSION))
@env.ui.machine("version-installed", Vagrant::VERSION)
# Load the latest installed version to output that.
tf = Tempfile.new("vagrant")
tf.close
url = "http://www.vagrantup.com/latest-version.json"
Vagrant::Util::Downloader.new(url, tf.path).download!
# Parse the JSON result
data = JSON.parse(File.read(tf.path))
# Load the latest version
latest = Vagrant.latest_version
# Output latest version
@env.ui.output(I18n.t(
"vagrant.version_latest", version: data["version"]))
@env.ui.machine("version-latest", data["version"])
"vagrant.version_latest", version: latest))
@env.ui.machine("version-latest", latest)
# Determine if its a new version, and if so, output some more
# information.
current = Gem::Version.new(Vagrant::VERSION)
latest = Gem::Version.new(data["version"])
latest = Gem::Version.new(latest)
if current >= latest
@env.ui.success(" \n" + I18n.t(
"vagrant.version_latest_installed"))