vagrant-shell-commander 0.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.
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ InstalledFiles
7
+ _yardoc
8
+ coverage
9
+ doc/
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ test/tmp
15
+ test/version_tmp
16
+ tmp
17
+ .ruby-*
18
+ *~
19
+ .vagrant
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format doc
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3-p286
4
+ install: bundle install
5
+ script: bundle exec rake
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vagrant-shell-commander.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
8
+ end
@@ -0,0 +1,72 @@
1
+ GIT
2
+ remote: git://github.com/mitchellh/vagrant.git
3
+ revision: e1e57024dc78565b99b8f2ccdd9c388270bf2de0
4
+ specs:
5
+ vagrant (1.2.3.dev)
6
+ childprocess (~> 0.3.7)
7
+ erubis (~> 2.7.0)
8
+ i18n (~> 0.6.0)
9
+ log4r (~> 1.1.9)
10
+ net-scp (~> 1.1.0)
11
+ net-ssh (~> 2.6.6)
12
+
13
+ PATH
14
+ remote: .
15
+ specs:
16
+ vagrant-shell-commander (0.1.0)
17
+
18
+ GEM
19
+ remote: https://rubygems.org/
20
+ specs:
21
+ cane (2.6.0)
22
+ parallel
23
+ childprocess (0.3.9)
24
+ ffi (~> 1.0, >= 1.0.11)
25
+ diff-lcs (1.2.4)
26
+ erubis (2.7.0)
27
+ ffi (1.9.0)
28
+ i18n (0.6.4)
29
+ log4r (1.1.10)
30
+ multi_json (1.7.7)
31
+ net-scp (1.1.1)
32
+ net-ssh (>= 2.6.5)
33
+ net-ssh (2.6.7)
34
+ parallel (0.7.1)
35
+ rake (10.1.0)
36
+ reek (1.3.1)
37
+ ruby2ruby (~> 2.0.2)
38
+ ruby_parser (~> 3.1.1)
39
+ sexp_processor
40
+ rspec (2.13.0)
41
+ rspec-core (~> 2.13.0)
42
+ rspec-expectations (~> 2.13.0)
43
+ rspec-mocks (~> 2.13.0)
44
+ rspec-core (2.13.1)
45
+ rspec-expectations (2.13.0)
46
+ diff-lcs (>= 1.1.3, < 2.0)
47
+ rspec-mocks (2.13.1)
48
+ ruby2ruby (2.0.6)
49
+ ruby_parser (~> 3.1)
50
+ sexp_processor (~> 4.0)
51
+ ruby_parser (3.1.3)
52
+ sexp_processor (~> 4.1)
53
+ sexp_processor (4.2.1)
54
+ simplecov (0.7.1)
55
+ multi_json (~> 1.0)
56
+ simplecov-html (~> 0.7.1)
57
+ simplecov-html (0.7.1)
58
+ yard (0.8.6.2)
59
+
60
+ PLATFORMS
61
+ ruby
62
+
63
+ DEPENDENCIES
64
+ bundler (~> 1.3)
65
+ cane
66
+ rake
67
+ reek
68
+ rspec
69
+ simplecov
70
+ vagrant!
71
+ vagrant-shell-commander!
72
+ yard
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Federico Gimenez Nieto
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ [![Build Status](https://travis-ci.org/fgimenez/vagrant-shell-commander.png)](https://travis-ci.org/fgimenez/vagrant-shell-commander)
2
+ [![Code Climate](https://codeclimate.com/github/fgimenez/vagrant-shell-commander.png)](https://codeclimate.com/github/fgimenez/vagrant-shell-commander)
3
+
4
+ # Vagrant::Shell::Commander
5
+
6
+ Vagrant plugin for executing arbitrary shell commands on guest. Executes the given command on all the machines on multinode environments. It also gives the option to specify a working directory.
7
+
8
+ ## Installation
9
+
10
+ Install it as a vagrant plugin:
11
+
12
+ $ vagrant plugin install vagrant-shell-commander
13
+
14
+ ## Usage
15
+
16
+ To execute a command on all the machines:
17
+
18
+ $ vagrant sh --cmd 'free'
19
+
20
+ Restrict the machine to run:
21
+
22
+ $ vagrant sh --cmd 'free' machine1
23
+
24
+ Add working directory:
25
+
26
+ $ vagrant sh --cmd 'ls -al' --cwd '/srv/www'
27
+
28
+ ## Contributing
29
+
30
+ 1. Fork it
31
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
32
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
33
+ 4. Push to the branch (`git push origin my-new-feature`)
34
+ 5. Create new Pull Request
@@ -0,0 +1,5 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ Dir.glob('lib/tasks/*.rake').each { |r| import r }
4
+
5
+ task default: [:reek, :spec, :quality]
@@ -0,0 +1,6 @@
1
+ Vagrant.require_plugin "vagrant-shell-commander"
2
+
3
+ Vagrant::Config.run do |config|
4
+ config.vm.box = "canonical-ubuntu-12.04"
5
+ config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"
6
+ end
@@ -0,0 +1,12 @@
1
+ begin
2
+ require 'cane/rake_task'
3
+
4
+ desc "Run cane to check quality metrics"
5
+ Cane::RakeTask.new(:quality) do |cane|
6
+ cane.abc_max = 15
7
+ cane.add_threshold 'coverage/.last_run.json', :>=, 95
8
+ cane.no_style = true
9
+ end
10
+ rescue LoadError
11
+ warn "cane not available, quality task not provided."
12
+ end
@@ -0,0 +1,5 @@
1
+ require 'reek/rake/task'
2
+
3
+ Reek::Rake::Task.new do |t|
4
+ t.fail_on_error = false
5
+ end
@@ -0,0 +1,6 @@
1
+ begin
2
+ require 'rspec/core/rake_task'
3
+ RSpec::Core::RakeTask.new(:spec)
4
+ rescue LoadError
5
+ warn "rspec not available, spec task not provided."
6
+ end
@@ -0,0 +1,15 @@
1
+ require "vagrant-shell-commander/version"
2
+ require "vagrant-shell-commander/option_manager"
3
+
4
+ module VagrantShellCommander
5
+ # Plugin definition
6
+ #
7
+ class Plugin < Vagrant.plugin("2")
8
+ name 'vagrant shell commander'
9
+
10
+ command 'sh' do
11
+ require_relative 'vagrant-shell-commander/command'
12
+ Command
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ module VagrantShellCommander
2
+ # Main plugin command
3
+ class Command < Vagrant.plugin("2", "command")
4
+ attr_accessor :env
5
+
6
+ # Main entry point of this command
7
+ #
8
+ def execute
9
+ cli_options = OptionManager.new.execute
10
+ argv = parse_options(cli_options[:parser])
11
+
12
+ return unless argv
13
+
14
+ with_target_vms(argv) do |machine|
15
+ manage_machine(machine, cli_options)
16
+ end
17
+
18
+ 0
19
+ end
20
+
21
+ private
22
+
23
+ # Executes actions for a given machine
24
+ #
25
+ # @param [Vagrant::Machine] subject vm
26
+ # @param [Hash] Parser (:parser key) and parsed options (:values key)
27
+ # @return nil
28
+ #
29
+ def manage_machine(machine, cli_options)
30
+ if machine.state.id != :running
31
+ env.ui.info("Machine #{machine.name} is not running.")
32
+ return
33
+ end
34
+
35
+ machine.communicate.
36
+ execute(add_cwd_to_command(cli_options[:values][:cmd],
37
+ cli_options[:values][:cwd])) do |type, data|
38
+ env.ui.info("#{machine.name}:: #{data}")
39
+ end
40
+ end
41
+
42
+ # Adds the change to a working directory to the given command
43
+ #
44
+ # @param cmd [String] Shell command
45
+ # @param cwd [String] Optional working directory
46
+ # @return [String] Command with directory change if cwd is present
47
+ #
48
+ def add_cwd_to_command(cmd, cwd=nil)
49
+ return cmd unless cwd
50
+ "cd #{cwd} && #{cmd}"
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,31 @@
1
+ module VagrantShellCommander
2
+ # Option parser
3
+ #
4
+ class OptionManager
5
+ # Main parsing method
6
+ # @return [Hash] The keys are :parser for the object returned by
7
+ # OptionParser and :values for the actual option values
8
+ #
9
+ def execute
10
+ options = {}
11
+ block = lambda do |parser|
12
+ parser.banner = "Usage: vagrant sh --cmd 'COMMAND' --cwd [DIR] [MACHINE]"
13
+
14
+ parser.separator ''
15
+
16
+ parser.on('--cwd [DIR]', '--change-working-dir [DIR]',
17
+ 'Directory to execute the command') do |cwd|
18
+ options[:cwd] = cwd
19
+ end
20
+
21
+ parser.on("--cmd 'COMMAND'", "--command 'COMMAND'",
22
+ 'Command to execute') do |cmd|
23
+ options[:cmd] = cmd
24
+ end
25
+ end
26
+
27
+ {parser: OptionParser.new(&block), values: options}
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,3 @@
1
+ module VagrantShellCommander
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantShellCommander::Command do
4
+ let(:subject) {described_class.new('2', 'command')}
5
+ let(:argv) {double}
6
+ let(:opts) {{parser: 'parser', values: 'values'}}
7
+
8
+ before(:each) do
9
+ VagrantShellCommander::OptionManager.stub_chain(:new, :execute).
10
+ and_return(opts)
11
+
12
+ subject.stub(:with_target_vms)
13
+ subject.stub(:parse_options).and_return(argv)
14
+ end
15
+
16
+ describe '#execute' do
17
+ it 'returns 0 if all went good' do
18
+ expect(subject.execute).to eql(0)
19
+ end
20
+
21
+ describe 'options' do
22
+ after(:each) do
23
+ subject.execute
24
+ end
25
+
26
+ it 'parses the given options' do
27
+ subject.should_receive(:parse_options).with(opts[:parser])
28
+ end
29
+
30
+ it 'returns on option parsing failure' do
31
+ subject.stub(:parse_options).and_return(false)
32
+
33
+ expect(subject.execute).to eql(nil)
34
+ end
35
+
36
+ end
37
+
38
+ describe 'command execution' do
39
+ let(:machine) {double}
40
+ let(:ui) {double(info: true)}
41
+ let(:env) {double(ui: ui)}
42
+ let(:machine_name) {'machine_name'}
43
+
44
+ before(:each) do
45
+ subject.stub(:with_target_vms).and_yield(machine)
46
+ subject.stub(:env).and_return env
47
+ machine.stub(:name).and_return(machine_name)
48
+ end
49
+
50
+ after(:each) do
51
+ subject.execute
52
+ end
53
+
54
+ context 'not running machine' do
55
+ before(:each) do
56
+ machine.stub_chain(:state, :id).and_return(:not_running)
57
+ end
58
+
59
+ it 'reports information about state' do
60
+ ui.should_receive(:info).with("Machine #{machine_name} is not running.")
61
+ end
62
+
63
+ it 'dows not try to execute the command' do
64
+ machine.should_not_receive(:communicate)
65
+ end
66
+ end
67
+
68
+ context 'running machine' do
69
+ let(:cmd) {'command'}
70
+ let(:communicate) {double(execute: true)}
71
+
72
+ before(:each) do
73
+ VagrantShellCommander::OptionManager.stub_chain(:new, :execute).
74
+ and_return(parser: 'parser', values: {cmd: cmd})
75
+
76
+ machine.stub_chain(:state, :id).and_return(:running)
77
+ machine.stub(:communicate).and_return(communicate)
78
+ end
79
+
80
+ it 'executes the given command' do
81
+ communicate.should_receive(:execute).with(cmd)
82
+ end
83
+
84
+ it 'shows the command output along with the machine name' do
85
+ data = 'data'
86
+
87
+ communicate.stub(:execute).and_yield('type', data)
88
+
89
+ ui.should_receive(:info).with("#{machine_name}:: #{data}")
90
+ end
91
+
92
+ it 'executes the command in the given cwd' do
93
+ cwd = 'cwd'
94
+
95
+ VagrantShellCommander::OptionManager.stub_chain(:new, :execute).
96
+ and_return(parser: 'parser', values: {cmd: cmd, cwd: cwd})
97
+
98
+ communicate.should_receive(:execute).with("cd #{cwd} && #{cmd}")
99
+ end
100
+
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantShellCommander::OptionManager do
4
+ let(:subject) {described_class.new}
5
+ let(:argv) {double()}
6
+
7
+ describe '#execute' do
8
+ let(:option_parser) {double(:banner= => true,
9
+ separator: true,
10
+ on: true)}
11
+
12
+ before(:each) do
13
+ OptionParser.stub(:new).
14
+ and_yield(option_parser)
15
+
16
+ subject.stub(:parse_options).and_return(true)
17
+ end
18
+
19
+ after(:each) do
20
+
21
+ end
22
+
23
+ it 'displays a informing banner' do
24
+ option_parser.should_receive(:banner=)
25
+
26
+ subject.execute
27
+ end
28
+
29
+ it 'has a cwd option' do
30
+ cwd_value = 'cwd'
31
+
32
+ option_parser.stub(:on).with('--cwd [DIR]',
33
+ anything,
34
+ anything).
35
+ and_yield(cwd_value)
36
+
37
+ result = subject.execute
38
+
39
+ expect(result[:values][:cwd]).to eql(cwd_value)
40
+ end
41
+
42
+ it 'has a cmd option' do
43
+ cmd_value = 'cmd'
44
+
45
+ option_parser.stub(:on).with("--cmd 'COMMAND'",
46
+ anything,
47
+ anything).
48
+ and_yield(cmd_value)
49
+
50
+ result = subject.execute
51
+
52
+ expect(result[:values][:cmd]).to eql(cmd_value)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,26 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'vagrant'
5
+
6
+ # This file was generated by the `rspec --init` command. Conventionally, all
7
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
8
+ # Require this file using `require "spec_helper"` to ensure that it is only
9
+ # loaded once.
10
+ #
11
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
12
+
13
+ Dir['lib/**/*.rb'].each {|f| require File.expand_path(f)}
14
+
15
+ RSpec.configure do |config|
16
+ config.treat_symbols_as_metadata_keys_with_true_values = true
17
+ config.run_all_when_everything_filtered = true
18
+ config.filter_run :focus
19
+
20
+
21
+ # Run specs in random order to surface order dependencies. If you find an
22
+ # order dependency and want to debug it, you can fix the order by providing
23
+ # the seed, which is printed after each run.
24
+ # --seed 1234
25
+ config.order = 'random'
26
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe VagrantShellCommander::Plugin do
4
+ it 'should have a name' do
5
+ expect(described_class.name).not_to be_nil
6
+ end
7
+
8
+ it "should define a command of type Command" do
9
+ default_command = described_class.command.
10
+ to_hash[:"sh"]
11
+ expect(default_command).to be(VagrantShellCommander::Command)
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-shell-commander/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vagrant-shell-commander"
8
+ spec.version = VagrantShellCommander::VERSION
9
+ spec.authors = ["Federico Gimenez Nieto"]
10
+ spec.email = ["federico.gimenez@gmail.com"]
11
+ spec.description = %q{This plugin allows you to execute a given shell command on all the machines of your multinode environment. You can aldo specify the working directory to execute the command}
12
+ spec.summary = %q{Vagrant plugin for executing arbitrary shell commands on guest(s)}
13
+ spec.homepage = "https://github.com/fgimenez/vagrant-shell-commander"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "reek"
25
+ spec.add_development_dependency "cane"
26
+ spec.add_development_dependency "yard"
27
+ spec.add_development_dependency "simplecov"
28
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-shell-commander
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Federico Gimenez Nieto
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: reek
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: cane
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: yard
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: simplecov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: This plugin allows you to execute a given shell command on all the machines
127
+ of your multinode environment. You can aldo specify the working directory to execute
128
+ the command
129
+ email:
130
+ - federico.gimenez@gmail.com
131
+ executables: []
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - .gitignore
136
+ - .rspec
137
+ - .travis.yml
138
+ - Gemfile
139
+ - Gemfile.lock
140
+ - LICENSE.txt
141
+ - README.md
142
+ - Rakefile
143
+ - Vagrantfile
144
+ - lib/tasks/cane.rake
145
+ - lib/tasks/reek.rake
146
+ - lib/tasks/rspec.rake
147
+ - lib/vagrant-shell-commander.rb
148
+ - lib/vagrant-shell-commander/command.rb
149
+ - lib/vagrant-shell-commander/option_manager.rb
150
+ - lib/vagrant-shell-commander/version.rb
151
+ - spec/command_spec.rb
152
+ - spec/option_manager_spec.rb
153
+ - spec/spec_helper.rb
154
+ - spec/vagrant_shell_commander_spec.rb
155
+ - vagrant-shell-commander.gemspec
156
+ homepage: https://github.com/fgimenez/vagrant-shell-commander
157
+ licenses:
158
+ - MIT
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubyforge_project:
177
+ rubygems_version: 1.8.25
178
+ signing_key:
179
+ specification_version: 3
180
+ summary: Vagrant plugin for executing arbitrary shell commands on guest(s)
181
+ test_files:
182
+ - spec/command_spec.rb
183
+ - spec/option_manager_spec.rb
184
+ - spec/spec_helper.rb
185
+ - spec/vagrant_shell_commander_spec.rb
186
+ has_rdoc: