vagrant-mutagen 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d35c8b9d8ef5789d2926e9419241aaffb0a3bf7e
4
+ data.tar.gz: 01c3ff65862716f420ec6aa71eaa5f4352338563
5
+ SHA512:
6
+ metadata.gz: 74348654116def10f2ac84888028a0d4266c969c7ef39ea56947ff1262e6ca0daf7416ba6467e5b1569c81a90fa4b805cd123be87fe5b61ebcf1920a63dba075
7
+ data.tar.gz: 31a0defcf41c8292abf85ffd61a3160ea2600a053d4657349f1ae15f70523c8dd98009add9f291b9a3df468977d8b3e4f3ab8c7b8ba582ec1fea5ed1b56f7ee0
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ .idea
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :development do
4
+ gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.6.2'
5
+ end
6
+
7
+ group :plugins do
8
+ gemspec
9
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2016 Falk Kühnel
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.
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # Vagrant::Mutagen
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/vagrant-mutagen.svg)](https://badge.fury.io/rb/vagrant-mutagen)
4
+ [![Gem](https://img.shields.io/gem/dt/vagrant-mutagen.svg)](https://rubygems.org/gems/vagrant-mutagen)
5
+ [![Gem](https://img.shields.io/gem/dtv/vagrant-mutagen.svg)](https://rubygems.org/gems/vagrant-mutagen)
6
+
7
+ This plugin adds an entry to your `~/.ssh/config` file on the host system.
8
+
9
+ On **up**, **resume** and **reload** commands, it tries to add the information, if it does not already exist in your config file.
10
+ On **halt**, **destroy**, and **suspend**, those entries will be removed again.
11
+
12
+
13
+ ## Installation
14
+
15
+ $ vagrant plugin install vagrant-mutagen
16
+
17
+ Uninstall it with:
18
+
19
+ $ vagrant plugin uninstall vagrant-mutagen
20
+
21
+ Update the plugin with:
22
+
23
+ $ vagrant plugin update vagrant-mutagen
24
+
25
+ ## Usage
26
+
27
+ You currently only need to set `orchestrate` and `config.vm.hostname`.
28
+
29
+ config.mutagen.orchestrate = true
30
+
31
+ This hostname will be used for the entry in the `~/.ssh/config` file.
32
+
33
+ ## Installing development version
34
+
35
+ If you would like to install vagrant-mutagen on the development version perform the following:
36
+
37
+ ```
38
+ git clone https://github.com/dasginganinja/vagrant-mutagen
39
+ cd vagrant-mutagen
40
+ git checkout develop
41
+ gem build vagrant-mutagen.gemspec
42
+ vagrant plugin install vagrant-mutagen-*.gem
43
+ ```
44
+
45
+ ## Contributing
46
+
47
+ 1. Fork it
48
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
49
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
50
+ 4. Push to the branch (`git push origin my-new-feature`)
51
+ 5. Create new Pull Request on the `develop` branch
52
+
53
+
54
+ ## Versions
55
+
56
+ ### 0.1.0
57
+ * Added config to enable orchestration.
58
+ * Added new actions to start and terminate orchestration.
59
+ * Hooked new actions into vagrant lifecycle events.
60
+ * Refactored vagrant-hostsupdater hosts commands for config.
61
+
62
+ ### 0.0.1
63
+ * Started with vagrant-hostsupdater 1.1.0
64
+ * Changed all references of hostsupdater to mutagen.
65
+ * Have not tested anything, but this is pushed up.
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,11 @@
1
+ require "vagrant-mutagen/version"
2
+ require "vagrant-mutagen/plugin"
3
+
4
+ module VagrantPlugins
5
+ module Mutagen
6
+ def self.source_root
7
+ @source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,22 @@
1
+ module VagrantPlugins
2
+ module Mutagen
3
+ module Action
4
+ class CacheConfig
5
+ include Mutagen
6
+
7
+ def initialize(app, env)
8
+ @app = app
9
+ @machine = env[:machine]
10
+ end
11
+
12
+ def call(env)
13
+ if mutagen_enabled
14
+ cacheConfigEntries
15
+ end
16
+ @app.call(env)
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,31 @@
1
+ module VagrantPlugins
2
+ module Mutagen
3
+ module Action
4
+ class RemoveConfig
5
+ include Mutagen
6
+
7
+ def initialize(app, env)
8
+ @app = app
9
+ @machine = env[:machine]
10
+ @ui = env[:ui]
11
+ end
12
+
13
+ def call(env)
14
+ machine_action = env[:machine_action]
15
+ if machine_action != :destroy || !@machine.id
16
+ if machine_action != :suspend
17
+ if machine_action != :halt
18
+ if mutagen_enabled
19
+ @ui.info "[vagrant-mutagen] Removing SSH config entry"
20
+ removeConfigEntries
21
+ end
22
+ end
23
+ end
24
+ end
25
+ @app.call(env)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,25 @@
1
+ require_relative "../Mutagen"
2
+ module VagrantPlugins
3
+ module Mutagen
4
+ module Action
5
+ class StartOrchestration
6
+ include Mutagen
7
+
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @machine = env[:machine]
12
+ @ui = env[:ui]
13
+ end
14
+
15
+ def call(env)
16
+ if mutagen_enabled
17
+ startOrchestration
18
+ end
19
+ @app.call(env)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require_relative "../Mutagen"
2
+ module VagrantPlugins
3
+ module Mutagen
4
+ module Action
5
+ class TerminateOrchestration
6
+ include Mutagen
7
+
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @machine = env[:machine]
12
+ @ui = env[:ui]
13
+ end
14
+
15
+ def call(env)
16
+ if mutagen_enabled
17
+ terminateOrchestration
18
+ end
19
+ @app.call(env)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ require_relative "../Mutagen"
2
+ module VagrantPlugins
3
+ module Mutagen
4
+ module Action
5
+ class UpdateConfig
6
+ include Mutagen
7
+
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @machine = env[:machine]
12
+ @ui = env[:ui]
13
+ end
14
+
15
+ def call(env)
16
+ if mutagen_enabled
17
+ @ui.info "[vagrant-mutagen] Checking for SSH config entries"
18
+ addConfigEntries()
19
+ end
20
+ @app.call(env)
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,189 @@
1
+ #TODO: remove before commit, just used for testing with .to_yaml function
2
+ require 'yaml'
3
+ module VagrantPlugins
4
+ module Mutagen
5
+ module Mutagen
6
+ if ENV['VAGRANT_MUTAGEN_SSH_CONFIG_PATH']
7
+ @@ssh_user_config_path = ENV['VAGRANT_MUTAGEN_SSH_CONFIG_PATH']
8
+ else
9
+ @@ssh_user_config_path = '~/.ssh/config'
10
+ end
11
+ @@ssh_user_config_path = File.expand_path(@@ssh_user_config_path)
12
+
13
+ def addConfigEntries
14
+ # Prepare some needed variables
15
+ uuid = @machine.id
16
+ name = @machine.name
17
+ hostname = @machine.config.vm.hostname
18
+ # New Config for ~/.ssh/config
19
+ newconfig = ''
20
+
21
+ # Read contents of SSH config file
22
+ file = File.open(@@ssh_user_config_path, "rb")
23
+ configContents = file.read
24
+ # Check for existing entry for hostname in config
25
+ entryPattern = configEntryPattern(hostname, name, uuid)
26
+ if configContents.match(/#{entryPattern}/)
27
+ @ui.info "[vagrant-mutagen] found SSH Config entry for: #{hostname}"
28
+ else
29
+ @ui.info "[vagrant-mutagen] adding entry to SSH config for: #{hostname}"
30
+ # Get SSH config from Vagrant
31
+ newconfig = createConfigEntry(hostname, name, uuid)
32
+ end
33
+
34
+ # Append vagrant ssh config to end of file
35
+ addToSSHConfig(newconfig)
36
+ end
37
+
38
+ def addToSSHConfig(content)
39
+ return if content.length == 0
40
+
41
+ @ui.info "[vagrant-mutagen] Writing the following config to (#@@ssh_user_config_path)"
42
+ @ui.info content
43
+ if !File.writable_real?(@@ssh_user_config_path)
44
+ @ui.info "[vagrant-mutagen] This operation requires administrative access. You may " +
45
+ "skip it by manually adding equivalent entries to the config file."
46
+ if !sudo(%Q(sh -c 'echo "#{content}" >> #@@ssh_user_config_path'))
47
+ @ui.error "[vagrant-mutagen] Failed to add config, could not use sudo"
48
+ end
49
+ elsif Vagrant::Util::Platform.windows?
50
+ require 'tmpdir'
51
+ uuid = @machine.id || @machine.config.mutagen.id
52
+ tmpPath = File.join(Dir.tmpdir, 'hosts-' + uuid + '.cmd')
53
+ File.open(tmpPath, "w") do |tmpFile|
54
+ tmpFile.puts(">>\"#{@@ssh_user_config_path}\" echo #{content}")
55
+ end
56
+ sudo(tmpPath)
57
+ File.delete(tmpPath)
58
+ else
59
+ content = "\n" + content + "\n"
60
+ hostsFile = File.open(@@ssh_user_config_path, "a")
61
+ hostsFile.write(content)
62
+ hostsFile.close()
63
+ end
64
+ end
65
+
66
+ # Create a regular expression that will match the vagrant-mutagen signature
67
+ def configEntryPattern(hostname, name, uuid = self.uuid)
68
+ hashedId = Digest::MD5.hexdigest(uuid)
69
+ Regexp.new("^# VAGRANT: #{hashedId}.*$\nHost #{hostname}.*$")
70
+ end
71
+
72
+ def createConfigEntry(hostname, name, uuid = self.uuid)
73
+ # Get the SSH config from Vagrant
74
+ sshconfig = `vagrant ssh-config --host #{hostname}`
75
+ # Trim Whitespace from end
76
+ sshconfig = sshconfig.gsub /^$\n/, ''
77
+ sshconfig = sshconfig.chomp
78
+ # Return the entry
79
+ %Q(#{signature(name, uuid)}\n#{sshconfig}\n#{signature(name, uuid)})
80
+ end
81
+
82
+ def cacheConfigEntries
83
+ @machine.config.mutagen.id = @machine.id
84
+ end
85
+
86
+ def removeConfigEntries
87
+ if !@machine.id and !@machine.config.mutagen.id
88
+ @ui.info "[vagrant-mutagen] No machine id, nothing removed from #@@ssh_user_config_path"
89
+ return
90
+ end
91
+ file = File.open(@@ssh_user_config_path, "rb")
92
+ configContents = file.read
93
+ uuid = @machine.id || @machine.config.mutagen.id
94
+ hashedId = Digest::MD5.hexdigest(uuid)
95
+ if configContents.match(/#{hashedId}/)
96
+ removeFromConfig
97
+ end
98
+ end
99
+
100
+ def removeFromConfig(options = {})
101
+ uuid = @machine.id || @machine.config.mutagen.id
102
+ hashedId = Digest::MD5.hexdigest(uuid)
103
+ if !File.writable_real?(@@ssh_user_config_path) || Vagrant::Util::Platform.windows?
104
+ if !sudo(%Q(sed -i -e '/# VAGRANT: #{hashedId}/,/# VAGRANT: #{hashedId}/d' #@@ssh_user_config_path))
105
+ @ui.error "[vagrant-mutagen] Failed to remove config, could not use sudo"
106
+ end
107
+ else
108
+ hosts = ""
109
+ pair_started = false
110
+ pair_ended = false
111
+ File.open(@@ssh_user_config_path).each do |line|
112
+ # Reset
113
+ if pair_started == true && pair_ended == true
114
+ pair_started = pair_ended = false
115
+ end
116
+ if line.match(/#{hashedId}/)
117
+ if pair_started == true
118
+ pair_ended = true
119
+ end
120
+ pair_started = true
121
+ end
122
+ hosts << line unless pair_started
123
+ end
124
+ hosts.strip!
125
+ hostsFile = File.open(@@ssh_user_config_path, "w")
126
+ hostsFile.write(hosts)
127
+ hostsFile.close()
128
+ end
129
+ end
130
+
131
+ def signature(name, uuid = self.uuid)
132
+ hashedId = Digest::MD5.hexdigest(uuid)
133
+ %Q(# VAGRANT: #{hashedId} (#{name}) / #{uuid})
134
+ end
135
+
136
+ def sudo(command)
137
+ return if !command
138
+ if Vagrant::Util::Platform.windows?
139
+ require 'win32ole'
140
+ args = command.split(" ")
141
+ command = args.shift
142
+ sh = WIN32OLE.new('Shell.Application')
143
+ sh.ShellExecute(command, args.join(" "), '', 'runas', 0)
144
+ else
145
+ return system("sudo #{command}")
146
+ end
147
+ end
148
+
149
+ def orchestration_enabled()
150
+ return @machine.config.mutagen.orchestrate == true
151
+ end
152
+
153
+ def mutagen_enabled()
154
+ return orchestration_enabled()
155
+ end
156
+
157
+ def startOrchestration()
158
+ daemonCommand = "mutagen daemon start"
159
+ projectStartedCommand = "mutagen project list >/dev/null 2>/dev/null"
160
+ projectStartCommand = "mutagen project start"
161
+ projectStatusCommand = "mutagen project list"
162
+ if !system(daemonCommand)
163
+ @ui.error "[vagrant-mutagen] Failed to start mutagen daemon"
164
+ end
165
+ if !system(projectStartedCommand) # mutagen project list returns 1 on error when no project is started
166
+ @ui.info "[vagrant-mutagen] Starting mutagen project orchestration (config: /mutagen.yml)"
167
+ if !system(projectStartCommand)
168
+ @ui.error "[vagrant-mutagen] Failed to start mutagen project (see error above)"
169
+ end
170
+ end
171
+ system(projectStatusCommand) # show project status to indicate if there are conflicts
172
+ end
173
+
174
+ def terminateOrchestration()
175
+ projectStartedCommand = "mutagen project list >/dev/null 2>/dev/null"
176
+ projectTerminateCommand = "mutagen project terminate"
177
+ projectStatusCommand = "mutagen project list 2>/dev/null"
178
+ if system(projectStartedCommand) # mutagen project list returns 1 on error when no project is started
179
+ @ui.info "[vagrant-mutagen] Stopping mutagen project orchestration"
180
+ if !system(projectTerminateCommand)
181
+ @ui.error "[vagrant-mutagen] Failed to stop mutagen project (see error above)"
182
+ end
183
+ end
184
+ system(projectStatusCommand)
185
+ end
186
+
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,30 @@
1
+ module VagrantPlugins
2
+ module Mutagen
3
+ class Command < Vagrant.plugin('2', :command)
4
+ #include HostsFile
5
+
6
+ def execute
7
+ # options = {}
8
+ # opts = OptionParser.new do |o|
9
+ # o.banner = 'Usage: vagrant hostmanager [vm-name]'
10
+ # o.separator ''
11
+
12
+ # o.on('--provider provider', String,
13
+ # 'Update machines with the specific provider.') do |provider|
14
+ # options[:provider] = provider
15
+ # end
16
+ # end
17
+
18
+ # argv = parse_options(opts)
19
+ # options[:provider] ||= @env.default_provider
20
+
21
+ # generate(@env, options[:provider].to_sym)
22
+
23
+ # with_target_vms(argv, options) do |machine|
24
+ # update(machine)
25
+ # end
26
+ puts "ran command"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Mutagen
5
+ class Config < Vagrant.plugin("2", :config)
6
+ attr_accessor :id
7
+ attr_accessor :orchestrate
8
+
9
+ def initialize
10
+ @orchestrate = false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,70 @@
1
+ require "vagrant-mutagen/Action/UpdateConfig"
2
+ require "vagrant-mutagen/Action/CacheConfig"
3
+ require "vagrant-mutagen/Action/RemoveConfig"
4
+ require "vagrant-mutagen/Action/StartOrchestration"
5
+ require "vagrant-mutagen/Action/TerminateOrchestration"
6
+
7
+ module VagrantPlugins
8
+ module Mutagen
9
+ class Plugin < Vagrant.plugin('2')
10
+ name 'Mutagen'
11
+ description <<-DESC
12
+ This plugin manages the ~/.ssh/config file for the host machine. An entry is
13
+ created for the hostname attribute in the vm.config.
14
+ DESC
15
+
16
+ config(:mutagen) do
17
+ require_relative 'config'
18
+ Config
19
+ end
20
+
21
+ action_hook(:mutagen, :machine_action_up) do |hook|
22
+ hook.append(Action::UpdateConfig)
23
+ hook.append(Action::StartOrchestration)
24
+ end
25
+
26
+ action_hook(:mutagen, :machine_action_provision) do |hook|
27
+ hook.before(Vagrant::Action::Builtin::Provision, Action::UpdateConfig)
28
+ hook.before(Vagrant::Action::Builtin::Provision, Action::StartOrchestration)
29
+ end
30
+
31
+ action_hook(:mutagen, :machine_action_halt) do |hook|
32
+ hook.append(Action::TerminateOrchestration)
33
+ hook.append(Action::RemoveConfig)
34
+ end
35
+
36
+ action_hook(:mutagen, :machine_action_suspend) do |hook|
37
+ hook.append(Action::TerminateOrchestration)
38
+ hook.append(Action::RemoveConfig)
39
+ end
40
+
41
+ action_hook(:mutagen, :machine_action_destroy) do |hook|
42
+ hook.prepend(Action::CacheConfig)
43
+ end
44
+
45
+ action_hook(:mutagen, :machine_action_destroy) do |hook|
46
+ hook.append(Action::TerminateOrchestration)
47
+ hook.append(Action::RemoveConfig)
48
+ end
49
+
50
+ action_hook(:mutagen, :machine_action_reload) do |hook|
51
+ hook.append(Action::TerminateOrchestration)
52
+ hook.prepend(Action::RemoveConfig)
53
+ hook.append(Action::UpdateConfig)
54
+ hook.append(Action::StartOrchestration)
55
+ end
56
+
57
+ action_hook(:mutagen, :machine_action_resume) do |hook|
58
+ hook.append(Action::TerminateOrchestration)
59
+ hook.prepend(Action::RemoveConfig)
60
+ hook.append(Action::UpdateConfig)
61
+ hook.append(Action::StartOrchestration)
62
+ end
63
+
64
+ command(:mutagen) do
65
+ require_relative 'command'
66
+ Command
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module Mutagen
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-mutagen/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'vagrant-mutagen'
8
+ spec.version = VagrantPlugins::Mutagen::VERSION
9
+ spec.authors = ['Tom Donahue']
10
+ spec.email = ['dasginganinja@gmail.com']
11
+ spec.description = %q{Enables Vagrant to utilize mutagen for project sync}
12
+ spec.summary = spec.description
13
+ spec.homepage = 'https://github.com/dasginganinja/vagrant-mutagen'
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
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-mutagen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tom Donahue
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Enables Vagrant to utilize mutagen for project sync
42
+ email:
43
+ - dasginganinja@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - lib/vagrant-mutagen.rb
54
+ - lib/vagrant-mutagen/Action/CacheConfig.rb
55
+ - lib/vagrant-mutagen/Action/RemoveConfig.rb
56
+ - lib/vagrant-mutagen/Action/StartOrchestration.rb
57
+ - lib/vagrant-mutagen/Action/TerminateOrchestration.rb
58
+ - lib/vagrant-mutagen/Action/UpdateConfig.rb
59
+ - lib/vagrant-mutagen/Mutagen.rb
60
+ - lib/vagrant-mutagen/command.rb
61
+ - lib/vagrant-mutagen/config.rb
62
+ - lib/vagrant-mutagen/plugin.rb
63
+ - lib/vagrant-mutagen/version.rb
64
+ - vagrant-mutagen.gemspec
65
+ homepage: https://github.com/dasginganinja/vagrant-mutagen
66
+ licenses:
67
+ - MIT
68
+ metadata: {}
69
+ post_install_message:
70
+ rdoc_options: []
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project:
85
+ rubygems_version: 2.5.2.3
86
+ signing_key:
87
+ specification_version: 4
88
+ summary: Enables Vagrant to utilize mutagen for project sync
89
+ test_files: []