vagrant-remove-old-box-versions 1.0.0 → 1.1.0

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: 7cec7454c8fed1bfd38e0ac57b6e2b4599eca988
4
- data.tar.gz: 38c4293d904040514912410b09965e052d6aaeef
3
+ metadata.gz: 0c1fe3a3664ab41b568684fcd58923d8a0406674
4
+ data.tar.gz: ec2bdcba66bf7cb4d28fc4c425a358f6ae26e546
5
5
  SHA512:
6
- metadata.gz: 9f8bffcbb80658f44fa10b3764c7e8497e8142d2195c75ded5f68a8b42f8ce43b74a3b574b75c99207b1b3295d73db4c387baf1c59bd54a28b9de045ef05a0eb
7
- data.tar.gz: f84d38dedd53151b7915879247b9620f0802e9f0ec0a4eb8c24ef861cbf9809d168f9c1219757f14919d21b25adab61d200e486c0c4536c2f9d03d00aa0846b5
6
+ metadata.gz: 487247b89a8f651d0fd93d4b25a41bc627faacd6ee9ae0a816dd5aff25580c64da6fe57604d8e963f44708388e70b968385a90dfc93436ccd146592e01724d02
7
+ data.tar.gz: 1aa6a2ba045d60e0f599ed31fa95fe9b8fbb1448ddb9de3542733af8d98058d3d6df079af52b0f8b6050743c5afe51f72b90a40aefe0c64b319b89accd1497f3
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 SWIS
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,33 +1,46 @@
1
- # Vagrant remove old box versions plugin
2
-
3
- This plugin enables you to automatically remove old vagrant boxes from you host. Just run ``vagrant remove-old-versions`` and it will check your downloades boxes and remove every box that is not the lastest downloaded version.
4
-
5
-
6
- ## Installation
7
-
8
-
9
- ```
10
- vagrant install plugin vagrant-remove-old-box-versions
11
- ```
12
-
13
- ## Usage
14
-
15
- ```
16
- Usage: vagrant remove-old-versions [options]
17
-
18
- Options:
19
-
20
- -p, --provider PROVIDER The specific provider type for the boxes to destroy.
21
- -f, --force Destroy without confirmation even when box is in use.
22
- ```
23
-
24
- ## Contributing
25
-
26
- This plugin is built and maintained by [Björn Brala](https://www.swis.nl/)
27
- Bug reports and pull requests are welcome on GitHub at [swisnl/vagrant-remove-old-box-versions](https://github.com/swisnl/vagrant-remove-old-box-versions).
28
-
29
-
30
- ## License
31
-
32
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
33
-
1
+ # Vagrant remove old box versions plugin
2
+
3
+ This plugin enables you to automatically remove old vagrant boxes from you host. Just run ``vagrant remove-old-versions`` and it will check your downloaded boxes and remove every box that is not the lastest downloaded version.
4
+
5
+ Internally it uses ```vagrant box list``` to get a list of boxes, and ```vagrant box remove --box-version xxx --provider xxx``` so it still has all safeguards you expect from vagrant.
6
+
7
+ [![Gem Version](https://badge.fury.io/rb/vagrant-remove-old-box-versions.svg)](https://badge.fury.io/rb/vagrant-remove-old-box-versions)
8
+
9
+ ## Installation
10
+
11
+ ```
12
+ vagrant plugin install vagrant-remove-old-box-versions
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```
18
+ Usage: vagrant remove-old-versions [options]
19
+
20
+ Options:
21
+
22
+ -p, --provider PROVIDER The specific provider type for the boxes to destroy.
23
+ -n, --dry-run Only print the boxes that would be removed.
24
+ --name NAME The specific box name to destroy.
25
+ -f, --force Destroy without confirmation even when box is in use.
26
+ ```
27
+
28
+ ## Contributing
29
+
30
+ This plugin is built and maintained by [Björn Brala](https://www.swis.nl/over-ons/bjorn-brala)
31
+ Bug reports and pull requests are welcome on GitHub at [swisnl/vagrant-remove-old-box-versions](https://github.com/swisnl/vagrant-remove-old-box-versions).
32
+
33
+
34
+ ## License
35
+
36
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
37
+
38
+ ## Changelog
39
+
40
+ ### [1.1.0] 2016-03-16
41
+
42
+ * `---dry-run` and `--name` option added by @danielpanteleit
43
+
44
+ ### [1.0.0] 2016-01-13
45
+
46
+ * Initial release.
@@ -1,23 +1,23 @@
1
- require "pathname"
2
-
3
- begin
4
- require 'vagrant'
5
- rescue LoadError
6
- Bundler.require(:default, :development)
7
- end
8
- require "vagrant-remove-old-box-versions/plugin"
9
- require "vagrant-remove-old-box-versions/command"
10
-
11
-
12
- module VagrantPlugins
13
- module RemoveOldBoxVersions
14
- lib_path = Pathname.new(File.expand_path("../vagrant-remove-old-box-versions", __FILE__))
15
-
16
- # This returns the path to the source of this plugin.
17
- #
18
- # @return [Pathname]
19
- def self.source_root
20
- @source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
21
- end
22
- end
1
+ require "pathname"
2
+
3
+ begin
4
+ require 'vagrant'
5
+ rescue LoadError
6
+ Bundler.require(:default, :development)
7
+ end
8
+ require "vagrant-remove-old-box-versions/plugin"
9
+ require "vagrant-remove-old-box-versions/command"
10
+
11
+
12
+ module VagrantPlugins
13
+ module RemoveOldBoxVersions
14
+ lib_path = Pathname.new(File.expand_path("../vagrant-remove-old-box-versions", __FILE__))
15
+
16
+ # This returns the path to the source of this plugin.
17
+ #
18
+ # @return [Pathname]
19
+ def self.source_root
20
+ @source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
21
+ end
22
+ end
23
23
  end
@@ -10,6 +10,7 @@ module VagrantPlugins
10
10
  def execute
11
11
  options = {}
12
12
  options[:force] = false
13
+ options[:dry_run] = false
13
14
 
14
15
  opts = OptionParser.new do |o|
15
16
  o.banner = "Usage: vagrant remove-old-versions [options]"
@@ -21,6 +22,14 @@ module VagrantPlugins
21
22
  options[:provider] = p
22
23
  end
23
24
 
25
+ o.on("-n", "--dry-run", "Only print the boxes that would be removed.") do |f|
26
+ options[:dry_run] = f
27
+ end
28
+
29
+ o.on("--name NAME", String, "The specific box name to destroy.") do |name|
30
+ options[:name] = name
31
+ end
32
+
24
33
  o.on("-f", "--force", "Destroy without confirmation even when box is in use.") do |f|
25
34
  options[:force] = f
26
35
  end
@@ -35,7 +44,7 @@ module VagrantPlugins
35
44
  return @env.ui.warn(I18n.t("vagrant.commands.box.no_installed_boxes"), prefix: false)
36
45
  end
37
46
 
38
- delete_oldest_boxes(boxes, options[:provider], options[:force])
47
+ delete_oldest_boxes(boxes, options[:provider], options[:force], options[:name], options[:dry_run])
39
48
 
40
49
  # Success, exit status 0
41
50
  0
@@ -43,7 +52,7 @@ module VagrantPlugins
43
52
 
44
53
  private
45
54
 
46
- def delete_oldest_boxes(boxes, only_provider, skip_confirm)
55
+ def delete_oldest_boxes(boxes, only_provider, skip_confirm, only_name, dry_run)
47
56
  # Find the longest box name
48
57
  longest_box = boxes.max_by { |x| x[0].length }
49
58
  longest_box_length = longest_box[0].length
@@ -54,6 +63,7 @@ module VagrantPlugins
54
63
  # First find the newest version for every installed box
55
64
  boxes.each do |name, version, provider|
56
65
  next if only_provider and only_provider != provider.to_s
66
+ next if only_name and only_name != name
57
67
 
58
68
  # Nested to make sure it works for boxes with different providers
59
69
  if newest_boxes.has_key?(name)
@@ -97,14 +107,17 @@ module VagrantPlugins
97
107
  removed_any_box = true
98
108
 
99
109
  # Use the remove box action
100
- @env.action_runner.run(Vagrant::Action.action_box_remove, {
101
- box_name: name,
102
- box_provider: provider,
103
- box_version: version,
104
- force_confirm_box_remove: skip_confirm,
105
- box_remove_all_versions: false,
106
- })
107
-
110
+ if dry_run
111
+ @env.ui.info("would remove #{name} #{provider} #{version}")
112
+ else
113
+ @env.action_runner.run(Vagrant::Action.action_box_remove, {
114
+ box_name: name,
115
+ box_provider: provider,
116
+ box_version: version,
117
+ force_confirm_box_remove: skip_confirm,
118
+ box_remove_all_versions: false,
119
+ })
120
+ end
108
121
  end
109
122
  end
110
123
 
@@ -114,4 +127,4 @@ module VagrantPlugins
114
127
  end
115
128
  end
116
129
  end
117
- end
130
+ end
@@ -1,18 +1,18 @@
1
- require "vagrant"
2
-
3
- module VagrantPlugins
4
- module RemoveOldVersions
5
- class Plugin < Vagrant.plugin("2")
6
- name "remove-old-versions"
7
- description <<-DESC
8
- This plugin enables you top remove all but the latest installed boxes.
9
- DESC
10
-
11
- command("remove-old-versions") do
12
- require_relative 'command'
13
- Command
14
- end
15
-
16
- end
17
- end
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module RemoveOldVersions
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "remove-old-versions"
7
+ description <<-DESC
8
+ This plugin enables you top remove all but the latest installed boxes.
9
+ DESC
10
+
11
+ command("remove-old-versions") do
12
+ require_relative 'command'
13
+ Command
14
+ end
15
+
16
+ end
17
+ end
18
18
  end
@@ -1,5 +1,5 @@
1
- module VagrantPlugins
2
- module RemoveOldVersions
3
- VERSION = '1.0.0'
4
- end
1
+ module VagrantPlugins
2
+ module RemoveOldVersions
3
+ VERSION = '1.1.0'
4
+ end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-remove-old-box-versions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bjorn Brala
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-13 00:00:00.000000000 Z
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,6 +51,7 @@ files:
51
51
  - ".travis.yml"
52
52
  - Gemfile
53
53
  - Gemfile.lock
54
+ - LICENSE
54
55
  - LICENSE.txt
55
56
  - README.md
56
57
  - Rakefile
@@ -62,6 +63,7 @@ files:
62
63
  - lib/vagrant-remove-old-box-versions/version.rb
63
64
  - pkg/vagrant-remove-old-box-versions-0.0.1.gem
64
65
  - pkg/vagrant-remove-old-box-versions-0.0.2.gem
66
+ - pkg/vagrant-remove-old-box-versions-1.0.0.gem
65
67
  - vagrant-remove-old-box-versions.gemspec
66
68
  homepage: https://github.com/swisnl/vagrant-remove-old-box-versions
67
69
  licenses: