vagrant-bindfs 0.1.7 → 0.1.8
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.
- data/LICENSE.txt +3 -1
- data/README.md +20 -3
- data/lib/vagrant-bindfs/config.rb +14 -13
- data/lib/vagrant-bindfs/error.rb +5 -0
- data/lib/vagrant-bindfs/middleware.rb +32 -43
- data/lib/vagrant-bindfs/version.rb +1 -1
- data/lib/vagrant-bindfs.rb +6 -2
- data/locales/en.yml +11 -9
- metadata +16 -13
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -11,8 +11,25 @@ Vagrant-bindfs is distributed as a Ruby gem. You can install it as any other gem
|
|
11
11
|
|
12
12
|
## Configure your VM
|
13
13
|
|
14
|
-
In your VagrantFile, you can use `config.bindfs.bind_folder` to configure folders that will be binded on VM startup.
|
15
|
-
|
14
|
+
In your VagrantFile, you can use `config.bindfs.bind_folder` to configure folders that will be binded on VM startup.
|
15
|
+
|
16
|
+
# In your Vagrantfile
|
17
|
+
Vagrant::Config.run do |config|
|
18
|
+
|
19
|
+
[...] # Your VM configuration
|
20
|
+
|
21
|
+
# Basic usage
|
22
|
+
config.bindfs.bind_folder "source/dir", "mount/point"
|
23
|
+
|
24
|
+
# Advanced options
|
25
|
+
config.bindfs.bind_folder "source/dir", "mount/point", :perms => "u=rw:g=r:o=r", :create_as_user => true
|
26
|
+
|
27
|
+
# Complete example for a NFS shared folder
|
28
|
+
config.vm.network :hostonly, "33.33.33.10" # (required to use NFS shared folder)
|
29
|
+
config.vm.share_folder "nfs-share", "/vagrant-nfs", "host/source/dir", :nfs => true
|
30
|
+
config.bindfs.bind_folder "/vagrant-nfs", "guest/mount/point"
|
31
|
+
|
32
|
+
end
|
16
33
|
|
17
34
|
bind_folder support following arguments...
|
18
35
|
|
@@ -45,7 +62,7 @@ bind_folder support following arguments...
|
|
45
62
|
- `:'xattr-rw'`
|
46
63
|
- `:'ctime-from-mtime'`
|
47
64
|
|
48
|
-
Ex:
|
65
|
+
Ex: ``.
|
49
66
|
|
50
67
|
You can overwrite default options _via_ `config.bindfs.default_options`.
|
51
68
|
|
@@ -2,24 +2,25 @@ module VagrantBindfs
|
|
2
2
|
# A configuration class to configure defaults which are used for
|
3
3
|
# the `vagrant-bindfs` plugin.
|
4
4
|
class Config < Vagrant::Config::Base
|
5
|
-
configures :bindfs
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def
|
11
|
-
@
|
12
|
-
|
6
|
+
attr_writer :default_options,
|
7
|
+
:binded_folders
|
8
|
+
|
9
|
+
def default_options
|
10
|
+
@default_options || {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def binded_folders
|
14
|
+
@binded_folders || []
|
13
15
|
end
|
14
16
|
|
15
|
-
def bind_folder(path, bindpath, opts=
|
17
|
+
def bind_folder(path, bindpath, opts = {})
|
18
|
+
@binded_folders = [] unless instance_variable_defined?(:@binded_folders)
|
16
19
|
@binded_folders << {
|
17
|
-
:path
|
20
|
+
:path => path,
|
18
21
|
:bindpath => bindpath
|
19
|
-
}.merge(opts
|
20
|
-
end
|
21
|
-
|
22
|
-
def validate(errors)
|
22
|
+
}.merge(opts)
|
23
23
|
end
|
24
|
+
|
24
25
|
end
|
25
26
|
end
|
@@ -42,62 +42,51 @@ module VagrantBindfs
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def call(env)
|
45
|
-
@env = env
|
46
45
|
@app.call(env)
|
47
|
-
|
46
|
+
@env = env
|
47
|
+
|
48
|
+
bind_folders if !binded_folders.empty? and bindfs_supported?
|
48
49
|
end
|
49
50
|
|
50
51
|
def binded_folders
|
51
|
-
@env.
|
52
|
+
@env[:vm].config.bindfs.binded_folders
|
52
53
|
end
|
53
54
|
|
54
55
|
def default_options
|
55
|
-
@@options.merge(@@flags).merge(@env.
|
56
|
+
@@options.merge(@@flags).merge(@env[:vm].config.bindfs.default_options)
|
57
|
+
end
|
58
|
+
|
59
|
+
def bindfs_supported?
|
60
|
+
@env[:vm].channel.execute("bindfs --help", :error_class => Error, :error_key => :not_installed)
|
61
|
+
end
|
62
|
+
|
63
|
+
def normalize_options opts
|
64
|
+
|
65
|
+
path = opts.delete(:path)
|
66
|
+
bindpath = opts.delete(:bindpath)
|
67
|
+
opts = default_options.merge(opts)
|
68
|
+
|
69
|
+
args = []
|
70
|
+
opts.each do |key, value|
|
71
|
+
args << "--#{key.to_s}" if @@flags.key?(key) and !!value
|
72
|
+
args << "--#{key.to_s}=#{value}" if @@options.key?(key) and !value.nil?
|
73
|
+
end
|
74
|
+
|
75
|
+
[ path, bindpath, " #{args.join(" ")}" ]
|
56
76
|
end
|
57
77
|
|
58
78
|
def bind_folders
|
59
|
-
@env[
|
79
|
+
@env[:ui].info I18n.t("vagrant.guest.linux.bindfs.status.binding")
|
80
|
+
binded_folders.each do |opts|
|
81
|
+
|
82
|
+
path, bindpath, args = normalize_options opts
|
60
83
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
rescue Vagrant::Errors::VagrantError => e
|
65
|
-
@env.ui.error e
|
66
|
-
@env.ui.error I18n.t("vagrant.actions.vm.bind_folders.bindfs_not_installed")
|
67
|
-
return
|
68
|
-
end
|
84
|
+
@env[:vm].channel.sudo("mkdir -p #{bindpath}")
|
85
|
+
@env[:vm].channel.sudo("sudo bindfs#{args} #{path} #{bindpath}", :error_class => Error, :error_key => :bindfs_command_fail)
|
86
|
+
@env[:ui].info I18n.t("vagrant.guest.linux.bindfs.status.binding_entry", :path => path, :bindpath => bindpath)
|
69
87
|
|
70
|
-
@env.ui.info I18n.t("vagrant.actions.vm.bind_folders.binding")
|
71
|
-
binded_folders.each do |opts|
|
72
|
-
|
73
|
-
path = opts.delete(:path)
|
74
|
-
bindpath = opts.delete(:bindpath)
|
75
|
-
opts = default_options.merge(opts)
|
76
|
-
|
77
|
-
args = []
|
78
|
-
opts.each do |key, value|
|
79
|
-
if @@flags.key?(key)
|
80
|
-
args << "--#{key.to_s}" if !!value
|
81
|
-
else
|
82
|
-
args << "--#{key.to_s}=#{value}" if !value.nil?
|
83
|
-
end
|
84
|
-
end
|
85
|
-
args = " #{args.join(" ")}"
|
86
|
-
|
87
|
-
begin
|
88
|
-
ssh.exec!("sudo mkdir -p #{bindpath}")
|
89
|
-
ssh.exec!("sudo bindfs#{args} #{path} #{bindpath}")
|
90
|
-
@env.ui.info I18n.t("vagrant.actions.vm.bind_folders.binding_entry",
|
91
|
-
:path => path,
|
92
|
-
:bindpath => bindpath
|
93
|
-
)
|
94
|
-
rescue Vagrant::Errors::VagrantError => e
|
95
|
-
@env.ui.error e
|
96
|
-
@env.ui.error I18n.t("vagrant.actions.vm.bind_folders.bindfs_command_fail")
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
88
|
end
|
101
89
|
end
|
90
|
+
|
102
91
|
end
|
103
92
|
end
|
data/lib/vagrant-bindfs.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
require 'vagrant'
|
2
|
+
require 'vagrant-bindfs/error'
|
2
3
|
require 'vagrant-bindfs/config'
|
3
4
|
require 'vagrant-bindfs/middleware'
|
4
5
|
|
6
|
+
# Register Bindfs config
|
7
|
+
Vagrant.config_keys.register(:bindfs) { VagrantBindfs::Config }
|
8
|
+
|
5
9
|
# Insert Bindfs before the NFS middleware in the ":start" and ":up" Action stack
|
6
|
-
Vagrant
|
7
|
-
Vagrant
|
10
|
+
Vagrant.actions[:start].insert Vagrant::Action::VM::NFS, VagrantBindfs::Middleware
|
11
|
+
Vagrant.actions[:up].insert Vagrant::Action::VM::NFS, VagrantBindfs::Middleware
|
8
12
|
|
9
13
|
# Add custom translations to the load path
|
10
14
|
I18n.load_path << File.expand_path("../../locales/en.yml", __FILE__)
|
data/locales/en.yml
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
en:
|
2
2
|
vagrant:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
guest:
|
4
|
+
linux:
|
5
|
+
bindfs:
|
6
|
+
errors:
|
7
|
+
not_installed: bindfs seems to not being installed on the virtual machine
|
8
|
+
bindfs_command_fail: |-
|
9
|
+
Please check options values and compatibility.
|
10
|
+
For a complete documentation, run `sudo bindfs --help` on the VM or see bindfs man page at http://www.cs.helsinki.fi/u/partel/bindfs_docs/bindfs.1.html
|
11
|
+
status:
|
12
|
+
binding: Binding folders...
|
13
|
+
binding_entry: "-- %{path} bind to %{bindpath}"
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-bindfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 8
|
10
|
+
version: 0.1.8
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- "Folken La\xC3\xABneck"
|
@@ -14,8 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date:
|
18
|
-
default_executable:
|
18
|
+
date: 2012-02-01 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: vagrant
|
@@ -25,11 +25,12 @@ dependencies:
|
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 51
|
28
29
|
segments:
|
29
30
|
- 0
|
30
|
-
-
|
31
|
-
-
|
32
|
-
version: 0.
|
31
|
+
- 9
|
32
|
+
- 4
|
33
|
+
version: 0.9.4
|
33
34
|
type: :runtime
|
34
35
|
version_requirements: *id001
|
35
36
|
description: A Vagrant plugin to automate bindfs mount in the VM. This allow you to change owner, group and permissions on files and, for example, work around NFS share permissions issues.
|
@@ -42,15 +43,15 @@ extensions: []
|
|
42
43
|
extra_rdoc_files: []
|
43
44
|
|
44
45
|
files:
|
45
|
-
- lib/vagrant-bindfs.rb
|
46
|
-
- lib/
|
46
|
+
- lib/vagrant-bindfs/version.rb
|
47
|
+
- lib/vagrant-bindfs/error.rb
|
47
48
|
- lib/vagrant-bindfs/config.rb
|
48
49
|
- lib/vagrant-bindfs/middleware.rb
|
49
|
-
- lib/
|
50
|
+
- lib/vagrant_init.rb
|
51
|
+
- lib/vagrant-bindfs.rb
|
50
52
|
- locales/en.yml
|
51
53
|
- README.md
|
52
54
|
- LICENSE.txt
|
53
|
-
has_rdoc: true
|
54
55
|
homepage: https://github.com/folken-laeneck/vagrant-bindfs
|
55
56
|
licenses: []
|
56
57
|
|
@@ -64,6 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
65
|
requirements:
|
65
66
|
- - ">="
|
66
67
|
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
67
69
|
segments:
|
68
70
|
- 0
|
69
71
|
version: "0"
|
@@ -72,13 +74,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
74
|
requirements:
|
73
75
|
- - ">="
|
74
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
75
78
|
segments:
|
76
79
|
- 0
|
77
80
|
version: "0"
|
78
81
|
requirements: []
|
79
82
|
|
80
83
|
rubyforge_project:
|
81
|
-
rubygems_version: 1.
|
84
|
+
rubygems_version: 1.8.6
|
82
85
|
signing_key:
|
83
86
|
specification_version: 3
|
84
87
|
summary: A Vagrant plugin to automate bindfs mount in the VM
|