vagrant_box_version 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 448b6eb663ff3e362c5e8953ffc7491ee52d7e6b
4
- data.tar.gz: 30b6be9f3f652ccebdbdb21622d7efa138c578ce
3
+ metadata.gz: 1c4b0d5d746a99637d2596722b2a59aebb985667
4
+ data.tar.gz: c4c5f3eadf68083ccf183600e2c4aa98b9df0409
5
5
  SHA512:
6
- metadata.gz: bcda7ad27f8749a59a5c128c53b2dbe8a79fadda2ee9034ecd3586263e3d9a6ed23e92f4e83199f9661c2dc24702ede3e046cec512211a0ef5fb31533979c302
7
- data.tar.gz: 33674f0b3bd51c28536219b64f86308ce46c42ac271e3aa72c1b05bc358f69727cea832bfd1786f0e87a704643d7dc98225ccbc3c3092aaececc663e9db770b6
6
+ metadata.gz: b214f97ca82d4d70bc62dee594217a9fa952351d346fcf75992fbf4ee1d2af53486c26df7d1a1f340132d2e77086ece3e95be34c8aef2e5779137f23f13951b9
7
+ data.tar.gz: a8da378649a5679befef71168400ce690c24e0a560bbf47db8ab90f5de0f5e3774e7b938395456285703ca2bf5b8da3a7c293ee9bc24256ca61f4f1627199eae
@@ -0,0 +1,18 @@
1
+ require_relative "version-checking"
2
+
3
+ module VagrantBoxVersion
4
+ module Action
5
+ class Check
6
+ include VersionChecking
7
+
8
+ def initialize(app, env)
9
+ @app = app
10
+ end
11
+
12
+ def call(env)
13
+ check(env[:machine], env[:ui])
14
+ @app.call(env)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,68 +1,15 @@
1
1
  require "vagrant"
2
+ require_relative "version-checking"
2
3
 
3
4
  module VagrantBoxVersion
4
- require "open-uri"
5
-
6
- class VersionString
7
- attr_reader :build, :hash
8
- include Comparable
9
-
10
- def initialize(string)
11
- @build = string.strip[/[^-]*/].to_i
12
- @hash = if string.include? "-" then string.strip.split("-")[1] else "" end
13
- end
14
-
15
- def to_s
16
- "#@build-#@hash"
17
- end
18
-
19
- def <=>(other)
20
- build <=> other.build
21
- end
22
- end
23
-
24
5
  class Command < Vagrant.plugin(2, :command)
6
+ include VersionChecking
25
7
 
26
8
  def execute
27
9
  ui = @env.ui
28
10
 
29
11
  with_target_vms() do |machine|
30
- box = machine.box
31
- unless box.nil?
32
- version = local_version(box.directory)
33
- remote = remote_version(machine.config.version.url, box.name)
34
-
35
- ui.info("Local version is #{version || "unknown"}")
36
-
37
- if (version || VersionString.new("0")) < (remote || VersionString.new("0"))
38
- ui.warn("Version #{remote} is available!")
39
- ui.info("To update, run:")
40
- ui.info(" vagrant destroy && vagrant box remove #{box.name} #{box.provider.to_s}")
41
- elsif version.nil?
42
- ui.warn("Local version couldn't be determined. You should probably upgrade your box.")
43
- elsif remote.nil?
44
- ui.warn("Remote version couldn't be determined. Try again later.")
45
- else
46
- ui.success("You are up to date!")
47
- end
48
- else
49
- ui.success("There is no local box yet. Nothing to do.")
50
- end
51
- end
52
- end
53
-
54
- private
55
-
56
- def local_version(boxdir)
57
- versionfile = File.join(boxdir, "include", "version")
58
- if File.exists? versionfile then VersionString.new(File.read(versionfile)) else nil end
59
- end
60
-
61
- def remote_version(server, name)
62
- begin
63
- VersionString.new(open("#{server}/#{name}.box.version").read)
64
- rescue
65
- nil
12
+ check(machine, ui)
66
13
  end
67
14
  end
68
15
  end
@@ -23,5 +23,17 @@ module VagrantBoxVersion
23
23
  require_relative "config"
24
24
  Config
25
25
  end
26
+
27
+ # thanks to
28
+ # https://github.com/tknerr/vagrant-plugin-bundler/blob/master/lib/vagrant-plugin-bundler/plugin.rb
29
+
30
+ check_version_hook = lambda do |hook|
31
+ require_relative "action"
32
+ hook.before Vagrant::Action::Builtin::Provision, VagrantBoxVersion::Action::Check
33
+ end
34
+
35
+ action_hook 'check-box-version-on-machine-up', :machine_action_up, &check_version_hook
36
+ action_hook 'check-box-version-on-machine-reload', :machine_action_reload, &check_version_hook
37
+ action_hook 'check-box-version-on-machine-provision', :machine_action_provision, &check_version_hook
26
38
  end
27
39
  end
@@ -0,0 +1,66 @@
1
+ ##
2
+ # Mix-in to do actual version checking
3
+ #
4
+
5
+ module VagrantBoxVersion
6
+ require "open-uri"
7
+
8
+
9
+ class VersionString
10
+ attr_reader :build, :hash
11
+ include Comparable
12
+
13
+ def initialize(string)
14
+ @build = string.strip[/[^-]*/].to_i
15
+ @hash = if string.include? "-" then string.strip.split("-")[1] else "" end
16
+ end
17
+
18
+ def to_s
19
+ "#@build-#@hash"
20
+ end
21
+
22
+ def <=>(other)
23
+ build <=> other.build
24
+ end
25
+ end
26
+
27
+
28
+ module VersionChecking
29
+ def check(machine, ui)
30
+ box = machine.box
31
+ unless box.nil?
32
+ version = local_version(box.directory)
33
+ remote = remote_version(machine.config.version.url, box.name)
34
+
35
+ ui.info("Local version is #{version || "unknown"}")
36
+
37
+ if (version || VersionString.new("0")) < (remote || VersionString.new("0"))
38
+ ui.warn("Version #{remote} is available!")
39
+ ui.info("To update, run:")
40
+ ui.info(" vagrant destroy && vagrant box remove #{box.name} #{box.provider.to_s}")
41
+ elsif version.nil?
42
+ ui.warn("Local version couldn't be determined. You should probably upgrade your box.")
43
+ elsif remote.nil?
44
+ ui.warn("Remote version couldn't be determined. Try again later.")
45
+ else
46
+ ui.success("You are up to date!")
47
+ end
48
+ else
49
+ ui.success("There is no local box yet. Nothing to do.")
50
+ end
51
+ end
52
+
53
+ def local_version(boxdir)
54
+ versionfile = File.join(boxdir, "include", "version")
55
+ if File.exists? versionfile then VersionString.new(File.read(versionfile)) else nil end
56
+ end
57
+
58
+ def remote_version(server, name)
59
+ begin
60
+ VersionString.new(open("#{server}/#{name}.box.version").read)
61
+ rescue
62
+ nil
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,3 +1,3 @@
1
1
  module VagrantBoxVersion
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -13,7 +13,8 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `find lib -type f`.split($/) +
17
+ ["Gemfile", "LICENSE.txt", "README.md", "Rakefile", "vagrant_box_version.gemspec"]
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
20
  spec.require_paths = ["lib"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant_box_version
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edd Steel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-05 00:00:00.000000000 Z
11
+ date: 2013-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -45,16 +45,17 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
49
- - Gemfile
50
- - LICENSE.txt
51
- - README.md
52
- - Rakefile
53
- - lib/vagrant_box_version.rb
48
+ - lib/vagrant_box_version/action.rb
54
49
  - lib/vagrant_box_version/command.rb
55
50
  - lib/vagrant_box_version/config.rb
56
51
  - lib/vagrant_box_version/plugin.rb
52
+ - lib/vagrant_box_version/version-checking.rb
57
53
  - lib/vagrant_box_version/version.rb
54
+ - lib/vagrant_box_version.rb
55
+ - Gemfile
56
+ - LICENSE.txt
57
+ - README.md
58
+ - Rakefile
58
59
  - vagrant_box_version.gemspec
59
60
  homepage: ''
60
61
  licenses:
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp