savi-vagrant-notify 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 +7 -0
- data/.gitignore +10 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +59 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/savi-vagrant-notify.rb +10 -0
- data/lib/savi-vagrant-notify/action/check_boot_state.rb +18 -0
- data/lib/savi-vagrant-notify/action/start_client_forwarder.rb +57 -0
- data/lib/savi-vagrant-notify/action/start_host_forwarder.rb +62 -0
- data/lib/savi-vagrant-notify/action/stop_host_forwarder.rb +34 -0
- data/lib/savi-vagrant-notify/config.rb +21 -0
- data/lib/savi-vagrant-notify/plugin.rb +70 -0
- data/lib/savi-vagrant-notify/utils.rb +63 -0
- data/lib/savi-vagrant-notify/version.rb +5 -0
- data/savi-vagrant-notify.gemspec +35 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d92053eacab1ebcd98c6b67f67676fc5eb5a9696
|
4
|
+
data.tar.gz: b1102a33b1b5be79e89b932a6f20d2dda492a2d4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 80fdeaf03c9d5f73eb2f95a7dbe714f280bd04e7ef7e79b468a662ef9ab7867065a7e5ad0d55bf16c1b32f1740ada4c9756f2bb68bead105861b0080d3a506d2
|
7
|
+
data.tar.gz: 1baaac6d972014177b137268a4f3d98444ca814b0ef603cc5d33f56c63f95065732d78d846e1c9ab331820e57cb630021b85c6b9d4e1fb43d49e436d2f185cca
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 mhallin
|
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,59 @@
|
|
1
|
+
# savi-vagrant-notify
|
2
|
+
|
3
|
+
A vagrant plugin that removes the need for port forwarding udp in the otherwise excellent [vagrant-notify-forwarder](https://github.com/mhallin/vagrant-notify-forwarder) plugin.
|
4
|
+
|
5
|
+
Instead of sending the udp notification to 127.0.0.1, this plugin looks up the public ip of the guest vm and forwards all notifications to that address.
|
6
|
+
|
7
|
+
Thanks to [vagrant-address](https://github.com/mkuzmin/vagrant-address) for figuring out how to look up the address.
|
8
|
+
|
9
|
+
The remainder of this document has only minor changes from the document in the [original](https://github.com/mhallin/vagrant-notify-forwarder/blob/030173561dcaaa64d9161bd52b1216cc7d1e0748/README.md).
|
10
|
+
|
11
|
+
# Vagrant file system notification forwarder plugin
|
12
|
+
|
13
|
+
A vagrant plugin that uses [notify-forwarder](https://github.com/mhallin/notify-forwarder) to
|
14
|
+
forward file system events from the host to the guest automatically on all shared folders.
|
15
|
+
|
16
|
+
This is useful for auto reloading file systems that rebuild when files change. Normally, they have
|
17
|
+
to use CPU intensive polling when watching shared folders. This plugin makes them able to use
|
18
|
+
inotify or similar for improved performance and reduced CPU usage.
|
19
|
+
|
20
|
+
## Installation and usage
|
21
|
+
|
22
|
+
```terminal
|
23
|
+
$ vagrant plugin install savi-vagrant-notify
|
24
|
+
$ vagrant reload
|
25
|
+
```
|
26
|
+
|
27
|
+
The server and guest binaries will be automatically downloaded from the notify-forwarder repo's
|
28
|
+
releases and verified with SHA256.
|
29
|
+
|
30
|
+
### Permissions
|
31
|
+
|
32
|
+
The client in the guest OS will run as root by default, assuming passwordless `sudo` works. If this
|
33
|
+
does *not* work, you can disable privilege escalation in your `Vagrantfile`:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
config.notify_forwarder.run_as_root = false
|
37
|
+
```
|
38
|
+
|
39
|
+
## Supported operating systems
|
40
|
+
|
41
|
+
To conserve size and dependencies, the plugin downloads binaries for supported platforms. This
|
42
|
+
plugin supports the same host/guest platforms as `notify-forwarder` itself:
|
43
|
+
|
44
|
+
* FreeBSD 64 bit as guest,
|
45
|
+
* Linux 64 bit as host and guest, and
|
46
|
+
* Mac OS X 64 bit as host and guest.
|
47
|
+
|
48
|
+
If you're running an unsupported host or guest and want to disable this plugin for a specific
|
49
|
+
machine, add the following line to your `Vagrantfile`:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
config.notify_forwarder.enable = false
|
53
|
+
```
|
54
|
+
|
55
|
+
## Contributors
|
56
|
+
|
57
|
+
* [CharlieC3](https://github.com/CharlieC3)
|
58
|
+
* [hedinfaok](https://github.com/hedinfaok)
|
59
|
+
* [seff](https://github.com/seff)
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "savi-vagrant-notify"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module SaviVagrantNotify
|
3
|
+
module Action
|
4
|
+
class CheckBootState
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
return unless env[:machine].config.notify_forwarder.enable
|
11
|
+
$BOOT_SAVED = env[:machine].state.id == :saved
|
12
|
+
|
13
|
+
@app.call env
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'savi-vagrant-notify/utils'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SaviVagrantNotify
|
5
|
+
module Action
|
6
|
+
class StartClientForwarder
|
7
|
+
def initialize(app, env)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def ensure_binary_downloaded(env)
|
12
|
+
os = :unsupported
|
13
|
+
hardware = :unsupported
|
14
|
+
|
15
|
+
env[:machine].communicate.execute('uname -s') do |type, data|
|
16
|
+
os = Utils.parse_os_name data if type == :stdout
|
17
|
+
end
|
18
|
+
|
19
|
+
env[:machine].communicate.execute('uname -m') do |type, data|
|
20
|
+
hardware = Utils.parse_hardware_name data if type == :stdout
|
21
|
+
end
|
22
|
+
|
23
|
+
env[:ui].error 'SAVI-Vagrant-Notify Unsupported client operating system' if os == :unsupported
|
24
|
+
env[:ui].error 'SAVI-Vagrant-Notify Unsupported client hardware' if hardware == :unsupported
|
25
|
+
|
26
|
+
if os != :unsupported and hardware != :unsupported
|
27
|
+
Utils.ensure_binary_downloaded env, os, hardware
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def call(env)
|
32
|
+
@app.call env
|
33
|
+
|
34
|
+
return if $BOOT_SAVED
|
35
|
+
|
36
|
+
return unless env[:machine].config.notify_forwarder.enable
|
37
|
+
|
38
|
+
path = ensure_binary_downloaded env
|
39
|
+
return unless path
|
40
|
+
|
41
|
+
port = env[:machine].config.notify_forwarder.port
|
42
|
+
|
43
|
+
start_command = "nohup /tmp/notify-forwarder receive -p #{port} &"
|
44
|
+
|
45
|
+
if env[:machine].config.notify_forwarder.run_as_root
|
46
|
+
start_command = "sudo #{start_command}"
|
47
|
+
end
|
48
|
+
|
49
|
+
env[:machine].communicate.upload(path, "/tmp/notify-forwarder")
|
50
|
+
env[:ui].output("Starting notify-forwarder ...")
|
51
|
+
env[:machine].communicate.execute(start_command)
|
52
|
+
env[:ui].detail("SAVI-Vagrant-Notify guest listening for file change notifications on 0.0.0.0:#{port}.")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'savi-vagrant-notify/utils'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SaviVagrantNotify
|
5
|
+
module Action
|
6
|
+
class StartHostForwarder
|
7
|
+
def initialize(app, env)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def ensure_binary_downloaded(env)
|
12
|
+
os = Utils.parse_os_name `uname -s`
|
13
|
+
hardware = Utils.parse_hardware_name `uname -m`
|
14
|
+
|
15
|
+
env[:ui].error 'SAVI-Vagrant-Notify Unsupported host operating system' if os == :unsupported
|
16
|
+
env[:ui].error 'SAVI-Vagrant-Notify Unsupported host hardware' if hardware == :unsupported
|
17
|
+
|
18
|
+
if os != :unsupported and hardware != :unsupported
|
19
|
+
Utils.ensure_binary_downloaded env, os, hardware
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def start_watcher(env, command)
|
24
|
+
pid = Process.spawn command
|
25
|
+
Process.detach(pid)
|
26
|
+
|
27
|
+
pidfile = Utils.host_pidfile env
|
28
|
+
pidfile.open('a+') do |f|
|
29
|
+
f.write("#{pid}\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def call(env)
|
34
|
+
if env[:machine].config.notify_forwarder.enable
|
35
|
+
port = env[:machine].config.notify_forwarder.port
|
36
|
+
# env[:machine].config.vm.network :forwarded_port, host: port, guest: port, protocol: 'udp'
|
37
|
+
end
|
38
|
+
|
39
|
+
@app.call env
|
40
|
+
|
41
|
+
if env[:machine].config.notify_forwarder.enable
|
42
|
+
path = ensure_binary_downloaded env
|
43
|
+
return unless path
|
44
|
+
|
45
|
+
address = env[:machine].provider.capability(:public_address)
|
46
|
+
env[:machine].config.vm.synced_folders.each do |id, options|
|
47
|
+
unless options[:disabled]
|
48
|
+
hostpath = File.expand_path(options[:hostpath], env[:root_path])
|
49
|
+
guestpath = options[:guestpath]
|
50
|
+
|
51
|
+
args = "watch -c #{address}:#{port} #{hostpath} #{guestpath}"
|
52
|
+
start_watcher env, "#{path} #{args}"
|
53
|
+
env[:ui].detail("SAVI-Vagrant-Notify host sending file change notifications to #{address}:#{port}")
|
54
|
+
env[:ui].detail("SAVI-Vagrant-Notify host forwarding notifications on #{hostpath} to #{guestpath}")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'savi-vagrant-notify/utils'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SaviVagrantNotify
|
5
|
+
module Action
|
6
|
+
class StopHostForwarder
|
7
|
+
def initialize(app, env)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
@app.call env
|
13
|
+
|
14
|
+
return unless env[:machine].config.notify_forwarder.enable
|
15
|
+
|
16
|
+
pidfile = Utils.host_pidfile env
|
17
|
+
|
18
|
+
if File.exists? pidfile
|
19
|
+
pidfile.open('r') do |f|
|
20
|
+
f.readlines.each do |process|
|
21
|
+
pid = process.to_i
|
22
|
+
begin
|
23
|
+
Process.kill 'TERM', pid
|
24
|
+
rescue Errno::ESRCH
|
25
|
+
end
|
26
|
+
end
|
27
|
+
pidfile.delete
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module SaviVagrantNotify
|
3
|
+
class Config < Vagrant.plugin(2, :config)
|
4
|
+
attr_accessor :port
|
5
|
+
attr_accessor :enable
|
6
|
+
attr_accessor :run_as_root
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@port = UNSET_VALUE
|
10
|
+
@enable = UNSET_VALUE
|
11
|
+
@run_as_root = UNSET_VALUE
|
12
|
+
end
|
13
|
+
|
14
|
+
def finalize!
|
15
|
+
@port = 29324 if @port == UNSET_VALUE
|
16
|
+
@enable = true if @enable == UNSET_VALUE
|
17
|
+
@run_as_root = true if @run_as_root == UNSET_VALUE
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
|
3
|
+
$BOOT_SAVED = false
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module SaviVagrantNotify
|
7
|
+
class Plugin < Vagrant.plugin('2')
|
8
|
+
name 'savi-vagrant-notify'
|
9
|
+
description 'Version of vagrant-notify-forwarder that does not require port forwarding'
|
10
|
+
|
11
|
+
register_boot_hooks = lambda do |hook|
|
12
|
+
require_relative 'action/start_host_forwarder'
|
13
|
+
require_relative 'action/start_client_forwarder'
|
14
|
+
require_relative 'action/check_boot_state'
|
15
|
+
|
16
|
+
hook.before VagrantPlugins::ProviderVirtualBox::Action::Resume,
|
17
|
+
SaviVagrantNotify::Action::CheckBootState
|
18
|
+
hook.after Vagrant::Action::Builtin::Provision,
|
19
|
+
SaviVagrantNotify::Action::StartHostForwarder
|
20
|
+
hook.after SaviVagrantNotify::Action::StartHostForwarder,
|
21
|
+
SaviVagrantNotify::Action::StartClientForwarder
|
22
|
+
end
|
23
|
+
|
24
|
+
register_suspend_hooks = lambda do |hook|
|
25
|
+
require_relative 'action/stop_host_forwarder'
|
26
|
+
|
27
|
+
hook.before VagrantPlugins::ProviderVirtualBox::Action::Suspend,
|
28
|
+
SaviVagrantNotify::Action::StopHostForwarder
|
29
|
+
end
|
30
|
+
|
31
|
+
register_resume_hooks = lambda do |hook|
|
32
|
+
require_relative 'action/start_host_forwarder'
|
33
|
+
|
34
|
+
hook.after VagrantPlugins::ProviderVirtualBox::Action::Provision,
|
35
|
+
SaviVagrantNotify::Action::StartHostForwarder
|
36
|
+
end
|
37
|
+
|
38
|
+
register_halt_hooks = lambda do |hook|
|
39
|
+
require_relative 'action/stop_host_forwarder'
|
40
|
+
|
41
|
+
hook.before Vagrant::Action::Builtin::GracefulHalt,
|
42
|
+
SaviVagrantNotify::Action::StopHostForwarder
|
43
|
+
end
|
44
|
+
|
45
|
+
register_destroy_hooks = lambda do |hook|
|
46
|
+
require_relative 'action/stop_host_forwarder'
|
47
|
+
|
48
|
+
hook.before Vagrant::Action::Builtin::GracefulHalt,
|
49
|
+
SaviVagrantNotify::Action::StopHostForwarder
|
50
|
+
end
|
51
|
+
|
52
|
+
config(:notify_forwarder) do
|
53
|
+
require_relative 'config'
|
54
|
+
Config
|
55
|
+
end
|
56
|
+
|
57
|
+
action_hook :start_notify_forwarder, :machine_action_up, ®ister_boot_hooks
|
58
|
+
action_hook :start_notify_forwarder, :machine_action_reload, ®ister_boot_hooks
|
59
|
+
|
60
|
+
action_hook :stop_notify_forwarder, :machine_action_suspend, ®ister_suspend_hooks
|
61
|
+
action_hook :stop_notify_forwarder, :machine_action_resume, ®ister_resume_hooks
|
62
|
+
|
63
|
+
action_hook :stop_notify_forwarder, :machine_action_halt, ®ister_halt_hooks
|
64
|
+
action_hook :stop_notify_forwarder, :machine_action_reload, ®ister_halt_hooks
|
65
|
+
|
66
|
+
action_hook :stop_notify_forwarder, :machine_action_destroy, ®ister_destroy_hooks
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'vagrant/util/downloader'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SaviVagrantNotify
|
5
|
+
class Utils
|
6
|
+
@@OS_NAMES = {
|
7
|
+
"Linux" => :linux,
|
8
|
+
"Darwin" => :darwin,
|
9
|
+
"FreeBSD" => :freebsd,
|
10
|
+
}
|
11
|
+
|
12
|
+
@@HARDWARE_NAMES = {
|
13
|
+
"x86_64" => :x86_64,
|
14
|
+
"amd64" => :x86_64,
|
15
|
+
}
|
16
|
+
|
17
|
+
def self.parse_os_name(data)
|
18
|
+
@@OS_NAMES[data.strip] or :unsupported
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.parse_hardware_name(data)
|
22
|
+
@@HARDWARE_NAMES[data.strip] or :unsupported
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.ensure_binary_downloaded(env, os, hardware)
|
26
|
+
download_urls = {
|
27
|
+
[:linux, :x86_64] => %w(https://github.com/mhallin/notify-forwarder/releases/download/release/v0.1.1/notify-forwarder_linux_x64
|
28
|
+
fc00ce7e30ae87daa10fb3bc4d77e06571998b408ff79a4aef3189f5210dc914),
|
29
|
+
[:darwin, :x86_64] => %w(https://github.com/mhallin/notify-forwarder/releases/download/release/v0.1.1/notify-forwarder_osx_x64
|
30
|
+
317f3ffea15393668bf04b128cef1545031eaf306eeb2c4a345a95d8c6e1c941),
|
31
|
+
[:freebsd, :x86_64] => %w(https://github.com/mhallin/notify-forwarder/releases/download/release/v0.1.1/notify-forwarder_freebsd_x64
|
32
|
+
082ceac8f5fbda6abc5e2872a6c748241f243f2d780c96d50b3f11f8e96ca65b),
|
33
|
+
}
|
34
|
+
|
35
|
+
url, sha256sum = download_urls[[os, hardware]]
|
36
|
+
path = env[:tmp_path].join File.basename(url)
|
37
|
+
should_download = true
|
38
|
+
|
39
|
+
if File.exists? path
|
40
|
+
digest = Digest::SHA256.file(path).hexdigest
|
41
|
+
|
42
|
+
if digest == sha256sum
|
43
|
+
should_download = false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if should_download
|
48
|
+
env[:ui].info 'SAVI-Vagrant-Notify Downloading client'
|
49
|
+
downloader = Vagrant::Util::Downloader.new url, path
|
50
|
+
downloader.download!
|
51
|
+
end
|
52
|
+
|
53
|
+
File.chmod(0755, path)
|
54
|
+
|
55
|
+
path
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.host_pidfile(env)
|
59
|
+
env[:machine].data_dir.join('notify_watcher_host_pid')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "savi-vagrant-notify/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "savi-vagrant-notify"
|
7
|
+
spec.version = VagrantPlugins::SaviVagrantNotify::VERSION
|
8
|
+
spec.authors = ["Paul Ward"]
|
9
|
+
spec.email = ["pward@savicontrols.com"]
|
10
|
+
|
11
|
+
spec.summary = "Version of vagrant-notify-forwarder that does not need port forwarding"
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "https://github.com/pward123/savi-vagrant-notify"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
17
|
+
|
18
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
+
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
20
|
+
spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
21
|
+
|
22
|
+
# Specify which files should be added to the gem when it is released.
|
23
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
|
+
# spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
25
|
+
# `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
# end
|
27
|
+
spec.files = `git ls-files -z`.split("\x0")
|
28
|
+
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
34
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: savi-vagrant-notify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Paul Ward
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-10-19 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: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: Version of vagrant-notify-forwarder that does not need port forwarding
|
42
|
+
email:
|
43
|
+
- pward@savicontrols.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".gitignore"
|
49
|
+
- Gemfile
|
50
|
+
- LICENSE.txt
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- bin/console
|
54
|
+
- bin/setup
|
55
|
+
- lib/savi-vagrant-notify.rb
|
56
|
+
- lib/savi-vagrant-notify/action/check_boot_state.rb
|
57
|
+
- lib/savi-vagrant-notify/action/start_client_forwarder.rb
|
58
|
+
- lib/savi-vagrant-notify/action/start_host_forwarder.rb
|
59
|
+
- lib/savi-vagrant-notify/action/stop_host_forwarder.rb
|
60
|
+
- lib/savi-vagrant-notify/config.rb
|
61
|
+
- lib/savi-vagrant-notify/plugin.rb
|
62
|
+
- lib/savi-vagrant-notify/utils.rb
|
63
|
+
- lib/savi-vagrant-notify/version.rb
|
64
|
+
- savi-vagrant-notify.gemspec
|
65
|
+
homepage: https://github.com/pward123/savi-vagrant-notify
|
66
|
+
licenses:
|
67
|
+
- MIT
|
68
|
+
metadata:
|
69
|
+
homepage_uri: https://github.com/pward123/savi-vagrant-notify
|
70
|
+
source_code_uri: 'TODO: Put your gem''s public repo URL here.'
|
71
|
+
changelog_uri: 'TODO: Put your gem''s CHANGELOG.md URL here.'
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.5.2.3
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Version of vagrant-notify-forwarder that does not need port forwarding
|
92
|
+
test_files: []
|