Merge pull request #3540 from mitchellh/f-version-command

vagrant version command
This commit is contained in:
Mitchell Hashimoto 2014-04-24 20:10:02 -07:00
commit 1f814cfc2f
6 changed files with 120 additions and 0 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

@ -0,0 +1,51 @@
require "json"
require "optparse"
module VagrantPlugins
module CommandVersion
class Command < Vagrant.plugin("2", :command)
def self.synopsis
"prints current and latest Vagrant version"
end
def execute
opts = OptionParser.new do |o|
o.banner = "Usage: vagrant version"
end
# Parse the options
argv = parse_options(opts)
return if !argv
# Output the currently installed version instantly.
@env.ui.output(I18n.t(
"vagrant.version_current", version: Vagrant::VERSION))
@env.ui.machine("version-installed", Vagrant::VERSION)
# Load the latest version
latest = Vagrant.latest_version
# Output latest version
@env.ui.output(I18n.t(
"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(latest)
if current >= latest
@env.ui.success(" \n" + I18n.t(
"vagrant.version_latest_installed"))
return 0
end
# Out of date! Let the user know how to upgrade.
@env.ui.output(" \n" + I18n.t(
"vagrant.version_upgrade_howto", version: latest.to_s))
0
end
end
end
end

View File

@ -0,0 +1,18 @@
require "vagrant"
module VagrantPlugins
module CommandVersion
class Plugin < Vagrant.plugin("2")
name "version command"
description <<-DESC
The `version` command prints the currently installed version
as well as the latest available version.
DESC
command("version") do
require File.expand_path("../command", __FILE__)
Command
end
end
end
end

View File

@ -223,6 +223,23 @@ en:
up some disk space.
Press any other key to continue.
version_current: |-
Installed Version: %{version}
version_latest: |-
Latest Version: %{version}
version_latest_installed: |-
You're running an up-to-date version of Vagrant!
version_upgrade_howto: |-
To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL
below:
http://www.vagrantup.com/downloads.html
If you're curious what changed in the latest release, view the
CHANGELOG below:
https://github.com/mitchellh/vagrant/blob/v%{version}/CHANGELOG.md
cfengine_config:
classes_array: |-
The 'classes' configuration must be an array.

View File

@ -123,6 +123,7 @@
<li<%= sidebar_current("cli-status") %>><a href="/v2/cli/status.html">status</a></li>
<li<%= sidebar_current("cli-suspend") %>><a href="/v2/cli/suspend.html">suspend</a></li>
<li<%= sidebar_current("cli-up") %>><a href="/v2/cli/up.html">up</a></li>
<li<%= sidebar_current("cli-version") %>><a href="/v2/cli/version.html">version</a></li>
<li<%= sidebar_current("cli-nonprimary") %>><a href="/v2/cli/non-primary.html">More Commands</a></li>
<li<%= sidebar_current("cli-machinereadable") %>><a href="/v2/cli/machine-readable.html">Machine Readable Output</a></li>
</ul>

View File

@ -0,0 +1,15 @@
---
page_title: "vagrant version - Command-Line Interface"
sidebar_current: "cli-version"
---
# Version
**Command: `vagrant version`**
This command tells you the version of Vagrant you have installed
as well as the latest version of Vagrant that is currently available.
In order to determine the latest available Vagrant version, this
command must make a network call. If you only want to see the currently
installed version, use `vagrant --version`.