entangler 0.4.0 → 0.4.1
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/README.md +3 -3
- data/lib/entangler/executor/background/master.rb +2 -1
- data/lib/entangler/executor/master.rb +14 -4
- data/lib/entangler/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 116d9b520b874e6c30aaac728a0d341547bfdd4f
|
4
|
+
data.tar.gz: e3981339b47c28b20c1510b6e97b32086e174a7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42aaecf1a355c18f5f44e09e76fc95ad1c4356b1930bee788386e5577f7d5a1f906cbdc5ea1e3c6e7617aa8735a16cb7dd977d17457e5d4573da232e7e0d7df7
|
7
|
+
data.tar.gz: 35f0c0b7be7c7984bf8d5215f4996b62d28cbf57afa21fc888087b44b768d40e2c594e2a5f21c5284012cf6d1a9b24ebde73ce752f8b5ae3ad28c07a1b9d5d36
|
data/README.md
CHANGED
@@ -14,12 +14,12 @@ $ gem install entangler
|
|
14
14
|
## Usage
|
15
15
|
|
16
16
|
```shell
|
17
|
-
entangler master /some/base/path user@remote:/some/remote/path
|
17
|
+
$ entangler master /some/base/path user@remote:/some/remote/path
|
18
18
|
```
|
19
19
|
|
20
20
|
```
|
21
|
-
entangler -h
|
22
|
-
Entangler v0.4.
|
21
|
+
$ entangler -h
|
22
|
+
Entangler v0.4.1
|
23
23
|
|
24
24
|
Usage:
|
25
25
|
entangler master <base_dir> <remote_user>@<remote_host>:<remote_base_dir> [options]
|
@@ -7,7 +7,8 @@ module Entangler
|
|
7
7
|
require 'open3'
|
8
8
|
ignore_opts = @opts[:ignore].map{|regexp| "-i '#{regexp.inspect}'"}.join(' ')
|
9
9
|
entangler_cmd = "entangler slave #{@opts[:remote_base_dir]} #{ignore_opts}"
|
10
|
-
|
10
|
+
ssh_cmd = generate_ssh_command("source ~/.rvm/environments/default && #{entangler_cmd}")
|
11
|
+
full_cmd = @opts[:remote_mode] ? ssh_cmd : entangler_cmd
|
11
12
|
|
12
13
|
@remote_writer, @remote_reader, remote_err, @remote_thread = Open3.popen3(full_cmd)
|
13
14
|
remote_err.close
|
@@ -22,7 +22,7 @@ module Entangler
|
|
22
22
|
raise 'Missing remote user' unless @opts.keys.include?(:remote_user)
|
23
23
|
raise 'Missing remote host' unless @opts.keys.include?(:remote_host)
|
24
24
|
@opts[:remote_port] ||= '22'
|
25
|
-
res =
|
25
|
+
res = `#{generate_ssh_command("[[ -d '#{@opts[:remote_base_dir]}' ]] && echo 'ok' || echo 'missing'")}`
|
26
26
|
raise 'Cannot connect to remote' if res.empty?
|
27
27
|
raise 'Remote base dir invalid' unless res.strip == 'ok'
|
28
28
|
else
|
@@ -34,9 +34,15 @@ module Entangler
|
|
34
34
|
|
35
35
|
def perform_initial_rsync
|
36
36
|
logger.info 'Running initial sync'
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
local_folders = `find #{base_dir} -type d`.split("\n").tap{|a| a.shift(1) }.map{|path| path.sub(base_dir, '') }
|
38
|
+
|
39
|
+
remote_find_cmd = "find #{@opts[:remote_base_dir]} -type d"
|
40
|
+
raw_remote_folders = `#{@opts[:remote_mode] ? generate_ssh_command(remote_find_cmd) : remote_find_cmd}`
|
41
|
+
remote_folders = raw_remote_folders.split("\n").tap{|a| a.shift(1) }.map{|path| path.sub(@opts[:remote_base_dir], '') }
|
42
|
+
|
43
|
+
all_folders = remote_folders | local_folders
|
44
|
+
ignore_matches = all_folders.map{|path| @opts[:ignore].map{|regexp| (regexp.match(path) || [])[0]}.compact.first}.compact.uniq
|
45
|
+
exclude_folders = ignore_matches.map{|path| path[1..-1]}
|
40
46
|
exclude_args = exclude_folders.map{|path| "--exclude #{path}"}.join(' ')
|
41
47
|
|
42
48
|
ssh_settings = @opts[:remote_mode] ? "-e \"ssh -p #{@opts[:remote_port]}\"" : ''
|
@@ -49,6 +55,10 @@ module Entangler
|
|
49
55
|
end
|
50
56
|
logger.debug 'Initial sync complete'
|
51
57
|
end
|
58
|
+
|
59
|
+
def generate_ssh_command(cmd)
|
60
|
+
"ssh -q #{@opts[:remote_user]}@#{@opts[:remote_host]} -p #{@opts[:remote_port]} -C \"#{cmd}\""
|
61
|
+
end
|
52
62
|
end
|
53
63
|
end
|
54
64
|
end
|
data/lib/entangler/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: entangler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Allie
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
version: '0'
|
144
144
|
requirements: []
|
145
145
|
rubyforge_project:
|
146
|
-
rubygems_version: 2.
|
146
|
+
rubygems_version: 2.5.1
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Two way file syncer using platform native notify and rdiff syncing.
|