capistrano-syncfiles 0.2.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1177558c37d50af39fefd640b3fef6b01d5d95b2
4
- data.tar.gz: d1616acee6018b4001875964df9a9db4172ba304
3
+ metadata.gz: c24da0aad509d6c995486b9def72fa14f8050624
4
+ data.tar.gz: 627837c3153cc159f213d95ca8f9b859e5db8d11
5
5
  SHA512:
6
- metadata.gz: 2eb78df5dcfed5fbbcc2966dda1d8e524710f56d764b34c195cb34a493cef5289a5b49f6eb06c1105dc4c4f063d97c0f86fd3c2cc764e5d78297b4224e81dc18
7
- data.tar.gz: cb00e0c3907fd997e327ab85c5a19fd21e23cae3c002182e9e44bda464b1b3e9ef0a527f3bb74e481c05c1d24b9954b81c5a6881df29ebfb15adaf705dbdca77
6
+ metadata.gz: 49e3b3950af263136238dc78ac5ea3a4221272e8729b27af10a0d3aa4d9775550c3205788ae2837f8d414d9aee3f5066913f019b2c144579b78811f90bc5aef9
7
+ data.tar.gz: c9d8be34c597105f67aad5530176e62c75b956978335aae0b318b119adf3de6128582c451bb04534b4286ba28b4edca6e59b2ee1c003c82578412035b51c926e
data/README.md CHANGED
@@ -22,6 +22,7 @@ set :syncfiles, {
22
22
  exclude: ['fvm', 'ithemes-security', 'wc-logs'] # excluded folders/files, based on local path, works also for remote
23
23
  }
24
24
  }
25
+ set :syncfiles_rsync_options, '-avzuO'
25
26
 
26
27
  set :syncfiles_roles, :all # roles to run on, default: :all
27
28
 
@@ -53,8 +54,14 @@ Capistrano tasks: http://capistranorb.com/documentation/getting-started/flow/
53
54
  The MIT License (MIT)
54
55
 
55
56
  ### Changelog
57
+ ##### 1.0.0
58
+ * add `syncfiles_rsync_options` default options
59
+
60
+ ##### 0.3.0
61
+ * use `current_path` instead of `release_path`
62
+
56
63
  ##### 0.2.0
57
- - add sftp strategy
64
+ * add sftp strategy
58
65
 
59
66
  ##### 0.1.0
60
- - Initial release
67
+ * Initial release
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "capistrano-syncfiles"
6
- s.version = "0.2.0"
6
+ s.version = "1.0.0"
7
7
  s.licenses = ["MIT"]
8
8
  s.authors = ["Tom Hanoldt"]
9
9
  s.email = ["tom@creative-workflow.berlin"]
@@ -1,6 +1,16 @@
1
+ def get_syncfiles_base_path
2
+ fetch(:syncfiles_base_path, "#{current_path}/")
3
+ end
4
+
1
5
  namespace :syncfiles do
2
6
  tasks = Dir[File.expand_path("syncfiles/*.rake", File.dirname(__FILE__))]
3
7
  tasks.each do |task|
4
8
  load task
5
9
  end
6
10
  end
11
+
12
+ namespace :load do
13
+ task :defaults do
14
+ set :syncfiles_rsync_options, '-avzuO'
15
+ end
16
+ end
@@ -4,7 +4,7 @@ namespace :rsync do
4
4
  "#{user}#{role.hostname}"
5
5
  end
6
6
 
7
- desc "Synchronise local and remote wp content folders via rsync"
7
+ desc "Synchronise from local to remote folder via rsync"
8
8
  task :up do
9
9
  files = fetch(:syncfiles)
10
10
  files.each do |local_path, config|
@@ -16,14 +16,16 @@ namespace :rsync do
16
16
  on release_roles sync_roles do |role|
17
17
  server = build_server_string(role)
18
18
 
19
- cmd = ["rsync -avzO #{local_path}/ #{server}:#{release_path}/#{remote_path}", *exclude_args]
19
+ args = fetch(:syncfiles_rsync_options)
20
+ args = args + " --rsync-path='sudo rsync'" if fetch(:use_sudo)
21
+ cmd = ["rsync #{args} #{local_path}/ #{server}:#{get_syncfiles_base_path}#{remote_path}", *exclude_args]
20
22
  puts cmd.join(' ')
21
23
  system cmd.join(' ')
22
24
  end
23
25
  end
24
26
  end
25
27
 
26
- desc "Synchronise local and remote wp content folders via rsync"
28
+ desc "Synchronise from remote to local folder via rsync"
27
29
  task :down do
28
30
  files = fetch(:syncfiles)
29
31
  files.each do |local_path, config|
@@ -35,7 +37,10 @@ namespace :rsync do
35
37
  on release_roles sync_roles do |role|
36
38
  server = build_server_string(role)
37
39
 
38
- cmd = ["rsync -avzO #{server}:#{release_path}/#{remote_path}/ #{local_path}", *exclude_args]
40
+ args = fetch(:syncfiles_rsync_options)
41
+ args = args + " --rsync-path='sudo rsync'" if fetch(:use_sudo)
42
+
43
+ cmd = ["rsync #{args} #{server}:#{get_syncfiles_base_path}#{remote_path}/ #{local_path}", *exclude_args]
39
44
  puts cmd.join(' ')
40
45
  system cmd.join(' ')
41
46
  end
@@ -1,4 +1,5 @@
1
1
  require 'fun_sftp'
2
+
2
3
  namespace :sftp do
3
4
  def connection(server, username, password)
4
5
  @connection ||= FunSftp::SFTPClient.new(server, username, password)
@@ -16,11 +17,11 @@ namespace :sftp do
16
17
  handle.mkdir!(remote_directory)
17
18
  end
18
19
 
19
- desc "Synchronise local and remote wp content folders via sftp"
20
+ desc "Synchronise from local to remote folder via sftp"
20
21
  task :up do
21
22
  files = fetch(:syncfiles)
22
23
  files.each do |local_path, config|
23
- remote_path = config[:remote]
24
+ remote_path = "#{get_syncfiles_base_path}#{config[:remote]}"
24
25
  exclude_dir = Array(config[:exclude])
25
26
  exclude_args = exclude_dir.map { |dir| "! -path '#{dir}/*'"}
26
27
  sync_roles = fetch(:syncfiles_roles, :all)
@@ -47,34 +48,34 @@ namespace :sftp do
47
48
  end
48
49
  end
49
50
 
50
- desc "Synchronise local and remote wp content folders via sftp"
51
+ desc "Synchronise from remote to local folder via sftp"
51
52
  task :down do
52
53
  files = fetch(:syncfiles)
53
54
  files.each do |local_path, config|
54
- remote_path = config[:remote]
55
+ remote_path = "#{get_syncfiles_base_path}#{config[:remote]}"
55
56
  exclude_dir = Array(config[:exclude])
56
57
  sync_roles = fetch(:syncfiles_roles, :all)
57
58
 
58
59
  on primary sync_roles do |role|
59
- handle = connection(role.hostname, role.user, fetch(:syncfiles_sftp_password))
60
-
61
- puts "collecting files in #{remote_path}"
62
- handle.glob(remote_path, "**/*").each do |remote_file|
63
-
64
- remote_file = "#{remote_path}/#{remote_file}"
60
+ handle = connection(role.hostname, role.user, fetch(:syncfiles_sftp_password))
65
61
 
66
- local_file = remote_file.sub(remote_path, local_path)
62
+ puts "collecting files in #{remote_path}"
63
+ handle.glob(remote_path, "**/*").each do |remote_file|
67
64
 
68
- next if exclude_dir.any? do |exclude|
69
- local_file.start_with?(exclude)
70
- end
65
+ remote_file = "#{remote_path}/#{remote_file}"
71
66
 
72
- `mkdir -p #{::File.dirname(local_file)}`
67
+ local_file = remote_file.sub(remote_path, local_path)
73
68
 
74
- handle.download!(remote_file, local_file)
69
+ next if exclude_dir.any? do |exclude|
70
+ local_file.start_with?(exclude)
75
71
  end
76
72
 
73
+ `mkdir -p #{::File.dirname(local_file)}`
74
+
75
+ handle.download!(remote_file, local_file)
76
+ end
77
77
  end
78
78
  end
79
79
  end
80
+
80
81
  end
@@ -1,5 +1,5 @@
1
1
  namespace :tar do
2
- desc "Synchronise local and remote wp content folders via rsync"
2
+ desc "Synchronise from local to remote folder via tar copy"
3
3
  task :up do
4
4
  files = fetch(:syncfiles)
5
5
  files.each do |local_path, config|
@@ -18,14 +18,14 @@ namespace :tar do
18
18
 
19
19
  on release_roles sync_roles do
20
20
  upload!(archive_name, tmp_file)
21
- execute :tar, "-xzf", tmp_file, "-C", "#{release_path}/#{remote_path}"
21
+ execute :tar, "-xzf", tmp_file, "-C", "#{get_syncfiles_base_path}#{remote_path}"
22
22
  execute :rm, tmp_file
23
23
  end
24
24
  system "rm -f #{archive_name}"
25
25
  end
26
26
  end
27
27
 
28
- desc "Synchronise local and remote wp content folders via rsync"
28
+ desc "Synchronise from remote to local folder via tar copy"
29
29
  task :down do
30
30
  files = fetch(:syncfiles)
31
31
  files.each do |local_path, config|
@@ -38,7 +38,7 @@ namespace :tar do
38
38
  sync_roles = fetch(:syncfiles_roles, :all)
39
39
 
40
40
  on primary sync_roles do
41
- execute :tar, "-c#{tar_verbose}zf", tmp_file, "-C", "#{release_path}/#{remote_path} .", *exclude_args
41
+ execute :tar, "-c#{tar_verbose}zf", tmp_file, "-C", "#{get_syncfiles_base_path}#{remote_path} .", *exclude_args
42
42
 
43
43
  download!(tmp_file, archive_name)
44
44
  execute :rm, tmp_file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-syncfiles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Hanoldt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-21 00:00:00.000000000 Z
11
+ date: 2018-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  version: '0'
78
78
  requirements: []
79
79
  rubyforge_project:
80
- rubygems_version: 2.6.12
80
+ rubygems_version: 2.6.14
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: This gem provides up and down file syncing with rsync, tar or sftp. This