docker-sync 0.2.0.beta5 → 0.2.0.rc1
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/VERSION +1 -1
- data/lib/docker-sync/sync_strategy/rsync.rb +5 -14
- data/lib/docker-sync/sync_strategy/unison.rb +18 -10
- data/lib/docker-sync/update_check.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06142b9ee0f12f549b75f3671aaab289c2cb43ea
|
4
|
+
data.tar.gz: 1257430a3b878a2d94970480ee02114f3c6606ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e96b8b6cb06680f069f75deec3e76be6ff8aa0c46b9e50308e0817bef903caf4c30c2afa41ca4ba40f48c3d28747963b90a0b21dcd8e9f630faf2b2ea97806b0
|
7
|
+
data.tar.gz: 7c93d7cff89803103207818b6c0500948914482d319c9aff5bffa42e19b4911f42c482638ea3513a2c02b2a6415c77d5658b7f9f2f803e84135713d97457a288
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.0.
|
1
|
+
0.2.0.rc1
|
@@ -116,26 +116,17 @@ module Docker_Sync
|
|
116
116
|
|
117
117
|
def get_user_mapping
|
118
118
|
user_mapping = ''
|
119
|
-
if @options.key?('
|
120
|
-
user_mapping = "-e
|
121
|
-
if @options.key?('sync_userid')
|
122
|
-
user_mapping = "#{user_mapping} -e OWNERID=#{@options['sync_userid']}"
|
123
|
-
end
|
124
|
-
elsif @options.key?('sync_userid')
|
125
|
-
raise("#{get_container_name}: You have set a sync_userid but no sync_user - you need to set both")
|
119
|
+
if @options.key?('sync_userid')
|
120
|
+
user_mapping = "#{user_mapping} -e OWNER_UID=#{@options['sync_userid']}"
|
126
121
|
end
|
127
122
|
return user_mapping
|
128
123
|
end
|
129
124
|
|
130
125
|
def get_group_mapping
|
131
126
|
group_mapping = ''
|
132
|
-
if @options.key?('
|
133
|
-
|
134
|
-
|
135
|
-
group_mapping = "#{group_mapping} -e GROUPID=#{@options['sync_groupid']}"
|
136
|
-
end
|
137
|
-
elsif @options.key?('sync_groupid')
|
138
|
-
raise("#{get_container_name}: You have set a sync_groupid but no sync_group - you need to set both")
|
127
|
+
if @options.key?('sync_groupid')
|
128
|
+
raise 'for now, rsync does no longer support groupid, but for nearly all cases sync_userid should be enaugh'
|
129
|
+
#group_mapping = "#{group_mapping} -e GROUP_ID=#{@options['sync_groupid']}"
|
139
130
|
end
|
140
131
|
return group_mapping
|
141
132
|
end
|
@@ -23,11 +23,12 @@ module Docker_Sync
|
|
23
23
|
if @options.key?('image')
|
24
24
|
@docker_image = @options['image']
|
25
25
|
else
|
26
|
-
@docker_image = 'eugenmayer/unison
|
26
|
+
@docker_image = 'eugenmayer/unison'
|
27
27
|
end
|
28
28
|
begin
|
29
29
|
Preconditions::unison_available
|
30
30
|
Preconditions::unox_available
|
31
|
+
Preconditions::macfsevents_available
|
31
32
|
rescue Exception => e
|
32
33
|
say_status 'error', "#{@sync_name} has been configured to sync with unison, but no unison available", :red
|
33
34
|
say_status 'error', e.message, :red
|
@@ -121,7 +122,7 @@ module Docker_Sync
|
|
121
122
|
args.push(@options['src'])
|
122
123
|
args.push('-auto')
|
123
124
|
args.push('-batch')
|
124
|
-
args.push(sync_prefer)
|
125
|
+
args.push(sync_prefer)
|
125
126
|
args.push(@options['sync_args']) if @options.key?('sync_args')
|
126
127
|
sync_host_port = get_host_port(get_container_name, UNISON_CONTAINER_PORT)
|
127
128
|
args.push("socket://#{@options['sync_host_ip']}:#{sync_host_port}")
|
@@ -132,11 +133,17 @@ module Docker_Sync
|
|
132
133
|
return args
|
133
134
|
end
|
134
135
|
|
136
|
+
# cares about conflict resolution
|
135
137
|
def sync_prefer
|
138
|
+
# thats our default, if nothing is set
|
139
|
+
unless @options.key?('sync_prefer') || @options['sync_prefer'] == 'default'
|
140
|
+
return "-prefer '#{@options['src']}' -copyonconflict"
|
141
|
+
end
|
142
|
+
|
136
143
|
case @options['sync_prefer']
|
137
|
-
|
138
|
-
|
139
|
-
|
144
|
+
when 'src' then "-prefer #{@options['src']}"
|
145
|
+
when 'dest' then "-prefer #{@options['dest']}"
|
146
|
+
else "-prefer #{@options['sync_prefer']}"
|
140
147
|
end
|
141
148
|
end
|
142
149
|
|
@@ -145,14 +152,15 @@ module Docker_Sync
|
|
145
152
|
container_name = get_container_name
|
146
153
|
volume_name = get_volume_name
|
147
154
|
env = {}
|
155
|
+
say_status 'ok', 'sync_user is no longer supported, since it ise no needed, use sync_userid only please', :yellow if @options.key?('sync_user')
|
156
|
+
|
148
157
|
ignore_strings = expand_ignore_strings
|
149
158
|
env['UNISON_EXCLUDES'] = ignore_strings.join(' ')
|
150
|
-
env['UNISON_OWNER'] = @options['sync_user'] if @options.key?('sync_user')
|
151
159
|
env['MAX_INOTIFY_WATCHES'] = @options['max_inotify_watches'] if @options.key?('max_inotify_watches')
|
152
160
|
if @options['sync_userid'] == 'from_host'
|
153
|
-
env['
|
161
|
+
env['OWNER_UID'] = Process.uid
|
154
162
|
else
|
155
|
-
env['
|
163
|
+
env['OWNER_UID'] = @options['sync_userid'] if @options.key?('sync_userid')
|
156
164
|
end
|
157
165
|
|
158
166
|
additional_docker_env = env.map{ |key,value| "-e #{key}=\"#{value}\"" }.join(' ')
|
@@ -165,7 +173,7 @@ module Docker_Sync
|
|
165
173
|
run_privileged = '--privileged' if @options.key?('max_inotify_watches') #TODO: replace by the minimum capabilities required
|
166
174
|
cmd = "docker run -p '#{@options['sync_host_ip']}::#{UNISON_CONTAINER_PORT}' \
|
167
175
|
-v #{volume_name}:#{@options['dest']} \
|
168
|
-
-e
|
176
|
+
-e VOLUME=#{@options['dest']} \
|
169
177
|
-e TZ=${TZ-`readlink /etc/localtime | sed -e 's,/usr/share/zoneinfo/,,'`} \
|
170
178
|
#{additional_docker_env} \
|
171
179
|
#{run_privileged} \
|
@@ -200,7 +208,7 @@ module Docker_Sync
|
|
200
208
|
|
201
209
|
def get_host_port(container_name, container_port)
|
202
210
|
File.exist?('/usr/bin/sed') ? sed = '/usr/bin/sed' : sed = `which sed`.chomp # use macOS native sed in /usr/bin/sed first, fallback to sed in $PATH if it's not there
|
203
|
-
cmd = 'docker inspect --format
|
211
|
+
cmd = 'docker inspect --format=\'{{(index (index .NetworkSettings.Ports "5000/tcp") 0).HostPort}}\' ' + container_name
|
204
212
|
say_status 'command', cmd, :white if @options['verbose']
|
205
213
|
stdout, stderr, exit_status = Open3.capture3(cmd)
|
206
214
|
if not exit_status.success?
|
@@ -63,7 +63,7 @@ class UpdateChecker
|
|
63
63
|
def check_unison_image
|
64
64
|
say_status 'ok','Checking if a newer unison image is available'
|
65
65
|
|
66
|
-
if system("docker pull eugenmayer/unison
|
66
|
+
if system("docker pull eugenmayer/unison | grep 'Downloaded newer image for'")
|
67
67
|
say_status 'ok', 'Downloaded newer image for unison', :green
|
68
68
|
@newer_image_found = true
|
69
69
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0.
|
4
|
+
version: 0.2.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugen Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|