Add local only and global only flags to plugin expunge command
This commit is contained in:
parent
564dff651e
commit
14edb8f423
|
@ -46,13 +46,13 @@ module VagrantPlugins
|
||||||
dirs = []
|
dirs = []
|
||||||
|
|
||||||
# Do not include global paths if local only
|
# Do not include global paths if local only
|
||||||
if !env[:env_local]
|
if !env[:env_local_only] || env[:global_only]
|
||||||
files << Vagrant::Plugin::Manager.instance.user_file.path
|
files << Vagrant::Plugin::Manager.instance.user_file.path
|
||||||
dirs << Vagrant::Bundler.instance.plugin_gem_path
|
dirs << Vagrant::Bundler.instance.plugin_gem_path
|
||||||
end
|
end
|
||||||
|
|
||||||
# Add local paths if they exist
|
# Add local paths if they exist
|
||||||
if Vagrant::Plugin::Manager.instance.local_file
|
if Vagrant::Plugin::Manager.instance.local_file && (env[:env_local_only] || !env[:global_only])
|
||||||
files << Vagrant::Plugin::Manager.instance.local_file.path
|
files << Vagrant::Plugin::Manager.instance.local_file.path
|
||||||
dirs << Vagrant::Bundler.instance.env_plugin_gem_path
|
dirs << Vagrant::Bundler.instance.env_plugin_gem_path
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,10 +16,18 @@ module VagrantPlugins
|
||||||
options[:force] = force
|
options[:force] = force
|
||||||
end
|
end
|
||||||
|
|
||||||
o.on("--local", "Remove local project plugins only") do |l|
|
o.on("--local", "Include local project plugins for expunge") do |l|
|
||||||
options[:env_local] = l
|
options[:env_local] = l
|
||||||
end
|
end
|
||||||
|
|
||||||
|
o.on("--local-only", "Only expunge local project plugins") do |l|
|
||||||
|
options[:env_local_only] = l
|
||||||
|
end
|
||||||
|
|
||||||
|
o.on("--global-only", "Only expunge global plugins") do |l|
|
||||||
|
options[:global_only] = l
|
||||||
|
end
|
||||||
|
|
||||||
o.on("--reinstall", "Reinstall current plugins after expunge") do |reinstall|
|
o.on("--reinstall", "Reinstall current plugins after expunge") do |reinstall|
|
||||||
options[:reinstall] = reinstall
|
options[:reinstall] = reinstall
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,12 +6,16 @@ describe VagrantPlugins::CommandPlugin::Action::ExpungePlugins do
|
||||||
let(:gems_path){ "#{home_path}/gems" }
|
let(:gems_path){ "#{home_path}/gems" }
|
||||||
let(:force){ true }
|
let(:force){ true }
|
||||||
let(:env_local){ false }
|
let(:env_local){ false }
|
||||||
|
let(:env_local_only){ nil }
|
||||||
|
let(:global_only){ nil }
|
||||||
let(:env) {{
|
let(:env) {{
|
||||||
ui: Vagrant::UI::Silent.new,
|
ui: Vagrant::UI::Silent.new,
|
||||||
home_path: home_path,
|
home_path: home_path,
|
||||||
gems_path: gems_path,
|
gems_path: gems_path,
|
||||||
force: force,
|
force: force,
|
||||||
env_local: env_local
|
env_local: env_local,
|
||||||
|
env_local_only: env_local_only,
|
||||||
|
global_only: global_only
|
||||||
}}
|
}}
|
||||||
|
|
||||||
let(:user_file) { double("user_file", path: user_file_pathname) }
|
let(:user_file) { double("user_file", path: user_file_pathname) }
|
||||||
|
@ -75,9 +79,9 @@ describe VagrantPlugins::CommandPlugin::Action::ExpungePlugins do
|
||||||
context "when local option is set" do
|
context "when local option is set" do
|
||||||
let(:env_local) { true }
|
let(:env_local) { true }
|
||||||
|
|
||||||
it "should not delete plugins" do
|
it "should delete plugins" do
|
||||||
expect(user_file_pathname).not_to receive(:delete)
|
expect(user_file_pathname).to receive(:delete)
|
||||||
expect(plugin_gem_path).not_to receive(:rmtree)
|
expect(plugin_gem_path).to receive(:rmtree)
|
||||||
subject.call(env)
|
subject.call(env)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -104,11 +108,60 @@ describe VagrantPlugins::CommandPlugin::Action::ExpungePlugins do
|
||||||
subject.call(env)
|
subject.call(env)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not delete user plugins" do
|
it "should delete user plugins" do
|
||||||
expect(user_file_pathname).not_to receive(:delete)
|
expect(user_file_pathname).to receive(:delete)
|
||||||
expect(plugin_gem_path).not_to receive(:rmtree)
|
expect(plugin_gem_path).to receive(:rmtree)
|
||||||
subject.call(env)
|
subject.call(env)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when local only option is set" do
|
||||||
|
let(:env_local_only) { true }
|
||||||
|
|
||||||
|
it "should delete local plugins" do
|
||||||
|
expect(local_file_pathname).to receive(:delete)
|
||||||
|
expect(env_plugin_gem_path).to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not delete user plugins" do
|
||||||
|
expect(user_file_pathname).not_to receive(:delete)
|
||||||
|
expect(plugin_gem_path).not_to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when global only option is set" do
|
||||||
|
let(:global_only) { true }
|
||||||
|
|
||||||
|
it "should not delete local plugins" do
|
||||||
|
expect(local_file_pathname).not_to receive(:delete)
|
||||||
|
expect(env_plugin_gem_path).not_to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should delete user plugins" do
|
||||||
|
expect(user_file_pathname).to receive(:delete)
|
||||||
|
expect(plugin_gem_path).to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when global and local only options are set" do
|
||||||
|
let(:env_local_only) { true }
|
||||||
|
let(:global_only) { true }
|
||||||
|
|
||||||
|
it "should delete local plugins" do
|
||||||
|
expect(local_file_pathname).to receive(:delete)
|
||||||
|
expect(env_plugin_gem_path).to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should delete user plugins" do
|
||||||
|
expect(user_file_pathname).to receive(:delete)
|
||||||
|
expect(plugin_gem_path).to receive(:rmtree)
|
||||||
|
subject.call(env)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue