vagrant-sshfs 0.0.8 → 1.0.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 +4 -4
- data/Gemfile +10 -3
- data/LICENSE +340 -0
- data/README.md +116 -34
- data/Rakefile +2 -0
- data/lib/vagrant-sshfs.rb +4 -6
- data/lib/vagrant-sshfs/cap/arch/sshfs_client.rb +29 -0
- data/lib/vagrant-sshfs/cap/debian/sshfs_client.rb +15 -0
- data/lib/vagrant-sshfs/cap/fedora/sshfs_client.rb +15 -0
- data/lib/vagrant-sshfs/cap/linux/sshfs_client.rb +11 -0
- data/lib/vagrant-sshfs/cap/linux/sshfs_mount.rb +90 -0
- data/lib/vagrant-sshfs/cap/redhat/sshfs_client.rb +36 -0
- data/lib/vagrant-sshfs/cap/suse/sshfs_client.rb +15 -0
- data/lib/vagrant-sshfs/command.rb +37 -17
- data/lib/vagrant-sshfs/errors.rb +19 -4
- data/lib/vagrant-sshfs/plugin.rb +63 -23
- data/lib/vagrant-sshfs/synced_folder.rb +154 -0
- data/lib/vagrant-sshfs/version.rb +3 -3
- data/locales/synced_folder_sshfs.yml +46 -0
- data/vagrant-sshfs.gemspec +12 -9
- metadata +28 -27
- data/.gitignore +0 -5
- data/CHANGELOG.md +0 -65
- data/Gemfile.lock +0 -40
- data/LICENSE.txt +0 -23
- data/Vagrantfile +0 -8
- data/lib/vagrant-sshfs/actions.rb +0 -43
- data/lib/vagrant-sshfs/builders/base.rb +0 -54
- data/lib/vagrant-sshfs/builders/guest.rb +0 -41
- data/lib/vagrant-sshfs/builders/host.rb +0 -93
- data/lib/vagrant-sshfs/config.rb +0 -27
- data/locales/en.yml +0 -21
@@ -0,0 +1,154 @@
|
|
1
|
+
require "vagrant/util/platform"
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SyncedFolderSSHFS
|
5
|
+
class SyncedFolder < Vagrant.plugin("2", :synced_folder)
|
6
|
+
@@vagrant_host_machine_ip
|
7
|
+
|
8
|
+
def initialize(*args)
|
9
|
+
super
|
10
|
+
@@vagrant_host_machine_ip = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
# This is called early when the synced folder is set to determine
|
14
|
+
# if this implementation can be used for this machine. This should
|
15
|
+
# return true or false.
|
16
|
+
#
|
17
|
+
# @param [Machine] machine
|
18
|
+
# @param [Boolean] raise_error If true, should raise an exception
|
19
|
+
# if it isn't usable.
|
20
|
+
# @return [Boolean]
|
21
|
+
def usable?(machine, raise_error=false)
|
22
|
+
return true #for now
|
23
|
+
end
|
24
|
+
|
25
|
+
# This is called after the machine is booted and after networks
|
26
|
+
# are setup.
|
27
|
+
#
|
28
|
+
# This might be called with new folders while the machine is running.
|
29
|
+
# If so, then this should add only those folders without removing
|
30
|
+
# any existing ones.
|
31
|
+
#
|
32
|
+
# No return value.
|
33
|
+
def enable(machine, folders, sshfsopts)
|
34
|
+
if machine.guest.capability?(:sshfs_installed)
|
35
|
+
if !machine.guest.capability(:sshfs_installed)
|
36
|
+
can_install = machine.guest.capability?(:sshfs_install)
|
37
|
+
if !can_install
|
38
|
+
raise VagrantPlugins::SyncedFolderSSHFS::Errors::SSHFSNotInstalledInGuest
|
39
|
+
end
|
40
|
+
machine.ui.info(I18n.t("vagrant.sshfs.actions.installing"))
|
41
|
+
machine.guest.capability(:sshfs_install)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
folders.each do |id, opts|
|
46
|
+
|
47
|
+
# If already mounted then there is nothing to do
|
48
|
+
if machine.guest.capability(:sshfs_is_folder_mounted, opts)
|
49
|
+
machine.ui.info(
|
50
|
+
I18n.t("vagrant.sshfs.info.already_mounted",
|
51
|
+
folder: opts[:guestpath]))
|
52
|
+
next
|
53
|
+
end
|
54
|
+
|
55
|
+
# Find out the host info and auth info for each folder
|
56
|
+
get_host_info(machine, opts)
|
57
|
+
get_auth_info(machine, opts)
|
58
|
+
|
59
|
+
# Do the mount
|
60
|
+
machine.ui.info(I18n.t("vagrant.sshfs.actions.mounting"))
|
61
|
+
machine.guest.capability(:sshfs_mount_folder, opts)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# This is called after destroying the machine during a
|
66
|
+
# `vagrant destroy` and also prior to syncing folders during
|
67
|
+
# a `vagrant up`.
|
68
|
+
#
|
69
|
+
# No return value.
|
70
|
+
#
|
71
|
+
# @param [Machine] machine
|
72
|
+
# @param [Hash] opts
|
73
|
+
def cleanup(machine, opts)
|
74
|
+
end
|
75
|
+
|
76
|
+
protected
|
77
|
+
|
78
|
+
def get_host_info(machine, opts)
|
79
|
+
# opts - the synced folder options hash
|
80
|
+
# machine -
|
81
|
+
|
82
|
+
# If the synced folder entry doesn't have host information in it then
|
83
|
+
# detect the vagrant host machine IP and use that
|
84
|
+
if not opts.has_key?(:ssh_host) or not opts[:ssh_host]
|
85
|
+
opts[:ssh_host] = detect_vagrant_host_ip(machine)
|
86
|
+
end
|
87
|
+
|
88
|
+
# If the synced folder doesn't have host port information in it
|
89
|
+
# default to port 22 for ssh
|
90
|
+
# detect the vagrant host machine IP and use that
|
91
|
+
if not opts.has_key?(:ssh_port) or not opts[:ssh_port]
|
92
|
+
opts[:ssh_port] = '22'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def detect_vagrant_host_ip(machine)
|
97
|
+
# Only run detection if it hasn't been run before
|
98
|
+
if not @@vagrant_host_machine_ip
|
99
|
+
# Attempt to detect host machine IP by connecting over ssh
|
100
|
+
# and then using the $SSH_CONNECTION env variable information to
|
101
|
+
# determine the vagrant host IP address
|
102
|
+
hostip = ''
|
103
|
+
machine.communicate.execute('echo $SSH_CONNECTION') do |type, data|
|
104
|
+
if type == :stdout
|
105
|
+
hostip = data.split()[0]
|
106
|
+
end
|
107
|
+
end
|
108
|
+
# TODO do some error checking here to make sure hostip was detected
|
109
|
+
machine.ui.info(I18n.t("vagrant.sshfs.info.detected_host_ip", ip: hostip))
|
110
|
+
@@vagrant_host_machine_ip = hostip
|
111
|
+
end
|
112
|
+
# Return the detected host IP
|
113
|
+
@@vagrant_host_machine_ip
|
114
|
+
end
|
115
|
+
|
116
|
+
def get_auth_info(machine, opts)
|
117
|
+
# opts - the synced folder options hash
|
118
|
+
# machine -
|
119
|
+
prompt_for_password = false
|
120
|
+
ssh_info = machine.ssh_info
|
121
|
+
|
122
|
+
# Detect the username of the current user
|
123
|
+
username = `whoami`.strip
|
124
|
+
|
125
|
+
# If no username provided then default to the current
|
126
|
+
# user that is executing vagrant
|
127
|
+
if not opts.has_key?(:ssh_username) or not opts[:ssh_username]
|
128
|
+
opts[:ssh_username] = username
|
129
|
+
end
|
130
|
+
|
131
|
+
# Check to see if we need to prompt the user for a password.
|
132
|
+
# We will prompt if:
|
133
|
+
# - User asked us to via prompt_for_password option
|
134
|
+
# - User did not provide a password in options and is not fwding ssh agent
|
135
|
+
#
|
136
|
+
if opts.has_key?(:prompt_for_password) and opts[:prompt_for_password]
|
137
|
+
prompt_for_password = opts[:prompt_for_password]
|
138
|
+
end
|
139
|
+
if not opts.has_key?(:ssh_password) or not opts[:ssh_password]
|
140
|
+
if not ssh_info.has_key?(:forward_agent) or not ssh_info[:forward_agent]
|
141
|
+
prompt_for_password = true
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# Now do the prompt
|
146
|
+
if prompt_for_password
|
147
|
+
opts[:ssh_password] = machine.ui.ask(
|
148
|
+
I18n.t("vagrant.sshfs.ask.prompt_for_password", username: opts[:ssh_username]),
|
149
|
+
echo: false)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
en:
|
2
|
+
vagrant:
|
3
|
+
sshfs:
|
4
|
+
actions:
|
5
|
+
installing: Installing SSHFS client...
|
6
|
+
mounting: Mounting SSHFS shared folders...
|
7
|
+
mounting_folder: |-
|
8
|
+
Mounting folder via SSHFS: %{hostpath} => %{guestpath}
|
9
|
+
ask:
|
10
|
+
prompt_for_password: |-
|
11
|
+
SSHFS password for '%{username}':
|
12
|
+
info:
|
13
|
+
detected_host_ip: |-
|
14
|
+
Detected host IP address is '%{ip}'
|
15
|
+
already_mounted: |-
|
16
|
+
The folder %{folder} in the guest already mounted.
|
17
|
+
errors:
|
18
|
+
communicator_not_ready: |-
|
19
|
+
The machine is reporting that it is not ready to communicate via ssh. Verify
|
20
|
+
this machine is properly running.
|
21
|
+
sshfs_not_in_guest: |-
|
22
|
+
The necessary SSHFS software is not installed in the guest.
|
23
|
+
install_failed_arch: |-
|
24
|
+
The install of the sshfs client software failed. On Arch this is most likely
|
25
|
+
because the package lists are not up to date [1] and partial upgrades are not
|
26
|
+
supported [2]. Please update your Arch system or install SSHFS manually.
|
27
|
+
|
28
|
+
[1] https://wiki.archlinux.org/index.php/pacman#Packages_cannot_be_retrieved_on_installation
|
29
|
+
[2] https://wiki.archlinux.org/index.php/System_maintenance#Partial_upgrades_are_unsupported
|
30
|
+
mount_failed: |-
|
31
|
+
Mounting SSHFS shared folders failed. This is most often caused by either
|
32
|
+
an SSH Daemon not running on the host or invalid credentials being provided.
|
33
|
+
Please make sure an SSH daemon is running on the host and proper credentials
|
34
|
+
were provided to be able to authenticate via SSH.
|
35
|
+
|
36
|
+
The command and output are:
|
37
|
+
|
38
|
+
%{command}
|
39
|
+
|
40
|
+
Stdout from the command:
|
41
|
+
|
42
|
+
%{stdout}
|
43
|
+
|
44
|
+
Stderr from the command:
|
45
|
+
|
46
|
+
%{stderr}
|
data/vagrant-sshfs.gemspec
CHANGED
@@ -5,19 +5,22 @@ require 'vagrant-sshfs/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "vagrant-sshfs"
|
8
|
-
spec.version =
|
9
|
-
spec.authors = ["
|
10
|
-
spec.email = ["
|
11
|
-
spec.description = "
|
8
|
+
spec.version = VagrantPlugins::SyncedFolderSSHFS::VERSION
|
9
|
+
spec.authors = ["Dusty Mabe"]
|
10
|
+
spec.email = ["dusty@dustymabe.com"]
|
11
|
+
spec.description = """
|
12
|
+
A Vagrant synced folder plugin that mounts folders via SSHFS.
|
13
|
+
This is the successor to Fabio Kreusch's implementation:
|
14
|
+
https://github.com/fabiokr/vagrant-sshfs"""
|
12
15
|
spec.summary = spec.description
|
13
|
-
spec.homepage = "
|
14
|
-
spec.license = "
|
16
|
+
spec.homepage = ""
|
17
|
+
spec.license = "GPL"
|
15
18
|
|
16
|
-
spec.files = `git ls-files`.split(
|
19
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
22
|
spec.require_paths = ["lib"]
|
20
23
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.
|
22
|
-
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-sshfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Dusty Mabe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,57 +16,58 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
33
|
+
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
description: A Vagrant plugin that mounts folders
|
40
|
+
version: '10.0'
|
41
|
+
description: "\n A Vagrant synced folder plugin that mounts folders via SSHFS.
|
42
|
+
\n This is the successor to Fabio Kreusch's implementation:\n https://github.com/fabiokr/vagrant-sshfs"
|
42
43
|
email:
|
43
|
-
-
|
44
|
+
- dusty@dustymabe.com
|
44
45
|
executables: []
|
45
46
|
extensions: []
|
46
47
|
extra_rdoc_files: []
|
47
48
|
files:
|
48
|
-
- ".gitignore"
|
49
|
-
- CHANGELOG.md
|
50
49
|
- Gemfile
|
51
|
-
-
|
52
|
-
- LICENSE.txt
|
50
|
+
- LICENSE
|
53
51
|
- README.md
|
54
|
-
-
|
52
|
+
- Rakefile
|
55
53
|
- lib/vagrant-sshfs.rb
|
56
|
-
- lib/vagrant-sshfs/
|
57
|
-
- lib/vagrant-sshfs/
|
58
|
-
- lib/vagrant-sshfs/
|
59
|
-
- lib/vagrant-sshfs/
|
54
|
+
- lib/vagrant-sshfs/cap/arch/sshfs_client.rb
|
55
|
+
- lib/vagrant-sshfs/cap/debian/sshfs_client.rb
|
56
|
+
- lib/vagrant-sshfs/cap/fedora/sshfs_client.rb
|
57
|
+
- lib/vagrant-sshfs/cap/linux/sshfs_client.rb
|
58
|
+
- lib/vagrant-sshfs/cap/linux/sshfs_mount.rb
|
59
|
+
- lib/vagrant-sshfs/cap/redhat/sshfs_client.rb
|
60
|
+
- lib/vagrant-sshfs/cap/suse/sshfs_client.rb
|
60
61
|
- lib/vagrant-sshfs/command.rb
|
61
|
-
- lib/vagrant-sshfs/config.rb
|
62
62
|
- lib/vagrant-sshfs/errors.rb
|
63
63
|
- lib/vagrant-sshfs/plugin.rb
|
64
|
+
- lib/vagrant-sshfs/synced_folder.rb
|
64
65
|
- lib/vagrant-sshfs/version.rb
|
65
|
-
- locales/
|
66
|
+
- locales/synced_folder_sshfs.yml
|
66
67
|
- vagrant-sshfs.gemspec
|
67
|
-
homepage:
|
68
|
+
homepage: ''
|
68
69
|
licenses:
|
69
|
-
-
|
70
|
+
- GPL
|
70
71
|
metadata: {}
|
71
72
|
post_install_message:
|
72
73
|
rdoc_options: []
|
@@ -84,9 +85,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
85
|
version: '0'
|
85
86
|
requirements: []
|
86
87
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.
|
88
|
+
rubygems_version: 2.4.8
|
88
89
|
signing_key:
|
89
90
|
specification_version: 4
|
90
|
-
summary: A Vagrant plugin that mounts folders
|
91
|
+
summary: 'A Vagrant synced folder plugin that mounts folders via SSHFS. This is the
|
92
|
+
successor to Fabio Kreusch''s implementation: https://github.com/fabiokr/vagrant-sshfs'
|
91
93
|
test_files: []
|
92
|
-
has_rdoc:
|
data/CHANGELOG.md
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
## vagrant-sshfs 0.0.8 (Jun 2, 2015) ##
|
2
|
-
|
3
|
-
* Fixed unicode character issue
|
4
|
-
|
5
|
-
*seasick*
|
6
|
-
|
7
|
-
## vagrant-sshfs 0.0.7 (Dec 8, 2014) ##
|
8
|
-
|
9
|
-
* Smooth folders creation.
|
10
|
-
* Unmount on machine Destroy/Halt/Suspend
|
11
|
-
* Remount on machine Resume/Provision/Suspend
|
12
|
-
|
13
|
-
*dmatora*
|
14
|
-
|
15
|
-
## vagrant-sshfs 0.0.6 (Oct 14, 2014) ##
|
16
|
-
|
17
|
-
* Avoids StrictHostKeyChecking by default.
|
18
|
-
|
19
|
-
*James O'Doherty*
|
20
|
-
|
21
|
-
## vagrant-sshfs 0.0.5 (May 26, 2014) ##
|
22
|
-
|
23
|
-
* Allows to disable the plugin to run on demand.
|
24
|
-
|
25
|
-
*Stéphane Klein*
|
26
|
-
|
27
|
-
* Allows to mount a host folder on the guest machine
|
28
|
-
|
29
|
-
*Adrian Olek*
|
30
|
-
|
31
|
-
* Checks if the `sshfs` command is available
|
32
|
-
|
33
|
-
*Fabio Kreusch*
|
34
|
-
|
35
|
-
* Unmount/mount on vagrant reload
|
36
|
-
|
37
|
-
*Fabio Kreusch*
|
38
|
-
|
39
|
-
* Adds sshfs command
|
40
|
-
|
41
|
-
*Fabio Kreusch*
|
42
|
-
|
43
|
-
## vagrant-sshfs 0.0.4 (March 5, 2014) ##
|
44
|
-
|
45
|
-
* Allows to set a custom ssh username.
|
46
|
-
|
47
|
-
*Daichi Nakajima*
|
48
|
-
|
49
|
-
## vagrant-sshfs 0.0.3 (December 15, 2013) ##
|
50
|
-
|
51
|
-
* Uses an absolute source for the remote path.
|
52
|
-
|
53
|
-
*Fabio Kreusch*
|
54
|
-
|
55
|
-
## vagrant-sshfs 0.0.2 (November 29, 2013) ##
|
56
|
-
|
57
|
-
* Revoked on wrong push.
|
58
|
-
|
59
|
-
*Fabio Kreusch*
|
60
|
-
|
61
|
-
## vagrant-sshfs 0.0.1 (September 27, 2013) ##
|
62
|
-
|
63
|
-
* First release.
|
64
|
-
|
65
|
-
*Fabio Kreusch*
|
data/Gemfile.lock
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
GIT
|
2
|
-
remote: git://github.com/mitchellh/vagrant.git
|
3
|
-
revision: 059de113a705f84ff165a4df049d38a2abcc60a8
|
4
|
-
tag: v1.4.0
|
5
|
-
specs:
|
6
|
-
vagrant (1.4.0)
|
7
|
-
childprocess (~> 0.3.7)
|
8
|
-
erubis (~> 2.7.0)
|
9
|
-
i18n (~> 0.6.0)
|
10
|
-
log4r (~> 1.1.9)
|
11
|
-
net-scp (~> 1.1.0)
|
12
|
-
net-ssh (>= 2.6.6, < 2.8.0)
|
13
|
-
|
14
|
-
PATH
|
15
|
-
remote: .
|
16
|
-
specs:
|
17
|
-
vagrant-sshfs (0.0.6)
|
18
|
-
|
19
|
-
GEM
|
20
|
-
remote: https://rubygems.org/
|
21
|
-
specs:
|
22
|
-
childprocess (0.3.9)
|
23
|
-
ffi (~> 1.0, >= 1.0.11)
|
24
|
-
erubis (2.7.0)
|
25
|
-
ffi (1.9.3)
|
26
|
-
i18n (0.6.9)
|
27
|
-
log4r (1.1.10)
|
28
|
-
net-scp (1.1.2)
|
29
|
-
net-ssh (>= 2.6.5)
|
30
|
-
net-ssh (2.7.0)
|
31
|
-
rake (10.1.0)
|
32
|
-
|
33
|
-
PLATFORMS
|
34
|
-
ruby
|
35
|
-
|
36
|
-
DEPENDENCIES
|
37
|
-
bundler (~> 1.3)
|
38
|
-
rake
|
39
|
-
vagrant!
|
40
|
-
vagrant-sshfs!
|