vagrant-scp-sync 0.5.8 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.vscode/settings.json +3 -0
- data/CHANGELOG.md +15 -0
- data/lib/vagrant-scp-sync/action/scp_sync.rb +71 -0
- data/lib/vagrant-scp-sync/errors.rb +17 -0
- data/lib/vagrant-scp-sync/plugin.rb +21 -2
- data/lib/vagrant-scp-sync/synced_folders.rb +43 -0
- data/lib/vagrant-scp-sync/version.rb +1 -1
- data/lib/vagrant-scp-sync.rb +10 -0
- data/locales/en.yml +18 -5
- data/vagrant-scp.gemspec +6 -6
- metadata +7 -3
- /data/lib/vagrant-scp-sync/{commands → command}/scp.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48bd4bcdcb8103f2ca11386ff215a56fc98ef26d74b5d479736d0610480211a3
|
4
|
+
data.tar.gz: 1246659b2e00ada41282f939a5924038b3abe341452d09470d3a3dc3c2efb7e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4fe45b3997bcbbe1138f0bb572dd6fe4dafa51adacfc78f62622229286f75e1af01a032ab7d981128e5539bcbcb46764c4d16332e313611d13cc237cd9440bd
|
7
|
+
data.tar.gz: ced2849fb7a6f595cac61fe13e88137b09a62ded22d7f252af1303ed71c51262600ba5d1f4e31538012f4049ec8733da8de4ae48428f295f7d2c7df38b304211
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.5.9](https://github.com/STARTcloud/vagrant-scp-sync/compare/v0.5.8...v0.5.9) (2024-11-19)
|
4
|
+
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
* add synced folders ([69bc1c6](https://github.com/STARTcloud/vagrant-scp-sync/commit/69bc1c683eddc802746f9e308cc951ad4baaee01))
|
9
|
+
* linting ([e8739c4](https://github.com/STARTcloud/vagrant-scp-sync/commit/e8739c453433e682d8cefe86b3031a9754f3dec8))
|
10
|
+
* linting ([2c92774](https://github.com/STARTcloud/vagrant-scp-sync/commit/2c92774f575ad1279a46cc3926c9b5bbf839410a))
|
11
|
+
* linting ([87edab0](https://github.com/STARTcloud/vagrant-scp-sync/commit/87edab01efdfde25f05d35945bcd5e22c67dad0b))
|
12
|
+
* linting ([98380fc](https://github.com/STARTcloud/vagrant-scp-sync/commit/98380fcf1b8c234ef5a7e42ced475f3416905681))
|
13
|
+
* linting ([bc1c3d8](https://github.com/STARTcloud/vagrant-scp-sync/commit/bc1c3d87432320d77c7e47a023f99f63d98e63fa))
|
14
|
+
* linting ([4b62732](https://github.com/STARTcloud/vagrant-scp-sync/commit/4b62732083b4a7fe516a0c77dec6618bdadd2fa1))
|
15
|
+
* linting ([41bf13b](https://github.com/STARTcloud/vagrant-scp-sync/commit/41bf13b94d233997755bcf48e60e2e26ac8b9f37))
|
16
|
+
* linting ([dd1b58f](https://github.com/STARTcloud/vagrant-scp-sync/commit/dd1b58fd7bad93afa9164dcf46e6f3668ee546be))
|
17
|
+
|
3
18
|
## [0.5.8](https://github.com/STARTcloud/vagrant-scp-sync/compare/v0.5.7...v0.5.8) (2024-06-25)
|
4
19
|
|
5
20
|
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant/util/platform'
|
4
|
+
require 'vagrant/util/subprocess'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module ScpSync
|
8
|
+
# This will SCP the files
|
9
|
+
class ScpSyncHelper
|
10
|
+
def self.scp_single(machine, opts)
|
11
|
+
ssh_info = machine.ssh_info
|
12
|
+
raise Vagrant::Errors::SSHNotReady if ssh_info.nil?
|
13
|
+
|
14
|
+
source_files = opts[:guestpath]
|
15
|
+
target_files = opts[:hostpath]
|
16
|
+
target_files = File.expand_path(target_files, machine.env.root_path)
|
17
|
+
target_files = Vagrant::Util::Platform.fs_real_path(target_files).to_s
|
18
|
+
target_files = Vagrant::Util::Platform.cygwin_path(target_files) if Vagrant::Util::Platform.windows?
|
19
|
+
source_files += '/' unless source_files.end_with?('/')
|
20
|
+
target_files += '/' unless target_files.end_with?('/')
|
21
|
+
opts[:owner] ||= ssh_info[:username]
|
22
|
+
opts[:group] ||= ssh_info[:username]
|
23
|
+
username = ssh_info[:username]
|
24
|
+
host = ssh_info[:host]
|
25
|
+
proxy_command = if @ssh_info[:proxy_command]
|
26
|
+
"-o ProxyCommand='#{@ssh_info[:proxy_command]}' "
|
27
|
+
else
|
28
|
+
''
|
29
|
+
end
|
30
|
+
|
31
|
+
if opts[:direction] == :upload || opts[:direction].nil?
|
32
|
+
source = "'#{source_files}'"
|
33
|
+
target = "#{username}@#{host}:'#{target_files}'"
|
34
|
+
elsif opts[:direction] == :download
|
35
|
+
source = "#{username}@#{host}:'#{source_files}'"
|
36
|
+
target = "'#{target_files}'"
|
37
|
+
end
|
38
|
+
|
39
|
+
command = [
|
40
|
+
'scp',
|
41
|
+
'-r',
|
42
|
+
'-o StrictHostKeyChecking=no',
|
43
|
+
'-o UserKnownHostsFile=/dev/null',
|
44
|
+
"-o port=#{@ssh_info[:port]}",
|
45
|
+
'-o LogLevel=ERROR',
|
46
|
+
proxy_command,
|
47
|
+
@ssh_info[:private_key_path].map { |k| "-i '#{k}'" }.join(' '),
|
48
|
+
source,
|
49
|
+
target
|
50
|
+
].join(' ')
|
51
|
+
|
52
|
+
command_opts = {}
|
53
|
+
command_opts[:workdir] = machine.env.root_path.to_s
|
54
|
+
|
55
|
+
machine.ui.info(I18n.t('vagrant.scp_folder', source_files: source_files, target_files: target_files))
|
56
|
+
|
57
|
+
command += [command_opts]
|
58
|
+
|
59
|
+
r = Vagrant::Util::Subprocess.execute(*command)
|
60
|
+
|
61
|
+
return if r.exit_code.zero?
|
62
|
+
|
63
|
+
raise Vagrant::Errors::SyncedFolderScpSyncError,
|
64
|
+
command: command.inspect,
|
65
|
+
source_files: source_files,
|
66
|
+
target_files: target_files,
|
67
|
+
stderr: r.stderr
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant'
|
4
|
+
|
5
|
+
module Vagrant
|
6
|
+
module Errors
|
7
|
+
# This Class denotes Errors for SCP Sync
|
8
|
+
class SyncedFolderScpSyncError < VagrantError
|
9
|
+
error_key(:scp_sync_error, 'vagrant_scp_sync.errors')
|
10
|
+
end
|
11
|
+
|
12
|
+
# This Class denotes that SCP Sync is not found
|
13
|
+
class SCPNotFound < VagrantError
|
14
|
+
error_key(:scp_installed_error, 'vagrant_scp_sync.errors')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,5 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
begin
|
4
|
+
require 'vagrant'
|
5
|
+
rescue LoadError
|
6
|
+
raise 'The vagrant-scp-sync plugin must be run within Vagrant.'
|
7
|
+
end
|
8
|
+
|
9
|
+
raise 'The vagrant-scp-sync plugin is only compatible with Vagrant 2+' if Vagrant::VERSION < '2'
|
10
|
+
|
3
11
|
module VagrantPlugins
|
4
12
|
module ScpSync
|
5
13
|
# This defines the class for the plugin vagrant-scp-sync
|
@@ -10,8 +18,19 @@ module VagrantPlugins
|
|
10
18
|
DESC
|
11
19
|
|
12
20
|
command 'scp' do
|
13
|
-
|
14
|
-
|
21
|
+
setup_i18n
|
22
|
+
require_relative 'command'
|
23
|
+
Command
|
24
|
+
end
|
25
|
+
|
26
|
+
synced_folder('scp', 5) do
|
27
|
+
require_relative 'synced_folder'
|
28
|
+
SyncedFolder
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.setup_i18n
|
32
|
+
I18n.load_path << File.expand_path('locales/en.yml', ScpSync.source_root)
|
33
|
+
I18n.reload!
|
15
34
|
end
|
16
35
|
end
|
17
36
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'log4r'
|
4
|
+
require 'vagrant/util/subprocess'
|
5
|
+
require 'vagrant/util/which'
|
6
|
+
|
7
|
+
require_relative 'action/scp_sync'
|
8
|
+
|
9
|
+
module VagrantPlugins
|
10
|
+
module ScpSync
|
11
|
+
# This Class prepares the environment for SCP Sync
|
12
|
+
class SyncedFolder < Vagrant.plugin('2', :synced_folder)
|
13
|
+
include Vagrant::Util
|
14
|
+
|
15
|
+
def initialize(*args)
|
16
|
+
super
|
17
|
+
|
18
|
+
@logger = Log4r::Logger.new('vagrant_scp_sync')
|
19
|
+
end
|
20
|
+
|
21
|
+
def usable?(_machine, raise_error: false)
|
22
|
+
scp_path = Which.which('scp')
|
23
|
+
return true if scp_path
|
24
|
+
|
25
|
+
return false unless raise_error
|
26
|
+
|
27
|
+
raise Vagrant::Errors::SCPNotFound
|
28
|
+
end
|
29
|
+
|
30
|
+
def prepare(machine, folders, opts); end
|
31
|
+
|
32
|
+
def enable(machine, folders, _opts)
|
33
|
+
ssh_info = machine.ssh_info
|
34
|
+
|
35
|
+
machine.ui.warn(I18n.t('vagrant.scp_ssh_password')) if ssh_info[:private_key_path].empty? && ssh_info[:password]
|
36
|
+
|
37
|
+
folders.each_value do |folder_opts|
|
38
|
+
ScpSyncHelper.scp_single(machine, folder_opts)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/vagrant-scp-sync.rb
CHANGED
@@ -2,3 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'vagrant-scp-sync/version'
|
4
4
|
require 'vagrant-scp-sync/plugin'
|
5
|
+
require 'vagrant-scp-sync/errors'
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
# This is used to SCP files to/from Guests and Hosts
|
9
|
+
module ScpSync
|
10
|
+
def self.source_root
|
11
|
+
@source_root ||= Pathname.new(File.expand_path('..', __dir__))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/locales/en.yml
CHANGED
@@ -1,5 +1,18 @@
|
|
1
|
-
en:
|
2
|
-
vagrant_scp_sync:
|
3
|
-
errors:
|
4
|
-
not_yet_implemented: |-
|
5
|
-
Configuration is not yet implemented
|
1
|
+
en:
|
2
|
+
vagrant_scp_sync:
|
3
|
+
errors:
|
4
|
+
not_yet_implemented: |-
|
5
|
+
Configuration is not yet implemented
|
6
|
+
|
7
|
+
scp_sync_error: |-
|
8
|
+
There was an error when attemping to sync folders using scp.
|
9
|
+
Please inspect the error message below for more info.
|
10
|
+
|
11
|
+
Host path: %{hostpath}
|
12
|
+
Guest path: %{guestpath}
|
13
|
+
Error: %{stderr}
|
14
|
+
Full command causing error:
|
15
|
+
%{command}
|
16
|
+
|
17
|
+
scp_installed_error: |-
|
18
|
+
SCP was not detected as installed
|
data/vagrant-scp.gemspec
CHANGED
@@ -29,10 +29,10 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.required_ruby_version = '>= 2.7.0'
|
31
31
|
spec.required_rubygems_version = '>= 1.3.6'
|
32
|
-
spec.
|
33
|
-
spec.
|
34
|
-
spec.
|
35
|
-
spec.
|
36
|
-
spec.
|
37
|
-
spec.
|
32
|
+
spec.add_dependency 'i18n', '~> 1.0'
|
33
|
+
spec.add_dependency 'iniparse', '~> 1.0'
|
34
|
+
spec.add_dependency 'log4r', '~> 1.1'
|
35
|
+
spec.add_dependency 'netaddr', '~> 2.0', '>= 2.0.4'
|
36
|
+
spec.add_dependency 'net-scp', '>= 1.1'
|
37
|
+
spec.add_dependency 'ruby_expect', '~> 1.7', '>= 1.7.5'
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-scp-sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Gilbert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- ".gitignore"
|
123
123
|
- ".rspec"
|
124
124
|
- ".rubocop.yml"
|
125
|
+
- ".vscode/settings.json"
|
125
126
|
- CHANGELOG.md
|
126
127
|
- CODE_OF_CONDUCT.md
|
127
128
|
- CONTRIBUTING.md
|
@@ -138,8 +139,11 @@ files:
|
|
138
139
|
- docs/css/styles.css
|
139
140
|
- docs/index.html
|
140
141
|
- lib/vagrant-scp-sync.rb
|
141
|
-
- lib/vagrant-scp-sync/
|
142
|
+
- lib/vagrant-scp-sync/action/scp_sync.rb
|
143
|
+
- lib/vagrant-scp-sync/command/scp.rb
|
144
|
+
- lib/vagrant-scp-sync/errors.rb
|
142
145
|
- lib/vagrant-scp-sync/plugin.rb
|
146
|
+
- lib/vagrant-scp-sync/synced_folders.rb
|
143
147
|
- lib/vagrant-scp-sync/version.rb
|
144
148
|
- locales/en.yml
|
145
149
|
- vagrant-scp.gemspec
|
File without changes
|