docker-sync 0.5.14 → 0.6.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
- SHA1:
3
- metadata.gz: f87dc91e044d3b2e317da4134a5ebcb563b55fb1
4
- data.tar.gz: 7b5a54ced8ae41c1529eade86499418f0efcce88
2
+ SHA256:
3
+ metadata.gz: 1670b82d1e005cdfb4485db9241a513f962a732b29d4bd3cf6beec9227c52e65
4
+ data.tar.gz: da40497b93174d5794d9fe7271a9c8a02c86fac647ee038b6d2380500da0cd31
5
5
  SHA512:
6
- metadata.gz: d2b94fc6d7c110aba5bcb80e76d22da763e32469e6c99dbf4a116e1aa53f1fb7d79c491b4dbba9e7547db2d445e1d25de80966910e0902d0dae5715d44f29af8
7
- data.tar.gz: 5f88a700c1da699eb6763f69a7c8a2b3e078c868b26bd483c62c907fdf36ee87625d933d3002276f3d39d46b68dfd0d4982553754211a9d6dc487c78a6353dcb
6
+ metadata.gz: e0bf6820a799a2381e343d4cd9e5719a2f1adf2879f1cf82bc1a96833110963b8737a019c5870e74c6a59cb76a9951a97e1bf3226bea5e94a423c69897767dc7
7
+ data.tar.gz: 550d7628a372fab1328ff3d06452919259409ac4d4d6d01324da9eab1fb99e6dbd26f9ba033fbbf0762134d766691e07edaf6e68117baa0371671c2b21accb43
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.14
1
+ 0.6.0
@@ -11,7 +11,7 @@ module DockerSync
11
11
 
12
12
  def self.running?
13
13
  return @running if defined? @running
14
- @running = system('docker ps 2>&1 > /dev/null')
14
+ @running = system('docker ps > /dev/null 2>&1')
15
15
  end
16
16
 
17
17
  def self.ensure!
@@ -2,8 +2,7 @@ module DockerSync
2
2
  module Dependencies
3
3
  module Rsync
4
4
  def self.available?
5
- return @available if defined? @available
6
- @available = find_executable0('rsync')
5
+ find_executable0('rsync')
7
6
  end
8
7
 
9
8
  def self.ensure!
@@ -2,8 +2,7 @@ module DockerSync
2
2
  module Dependencies
3
3
  module Unison
4
4
  def self.available?
5
- return @available if defined? @available
6
- @available = find_executable0('unison')
5
+ find_executable0('unison')
7
6
  end
8
7
 
9
8
  def self.ensure!
@@ -15,10 +15,8 @@ module DockerSync
15
15
  # should never have been called anyway - fix the call that it should check for the OS
16
16
  raise 'Unox cannot be available for other platforms then MacOS' unless Environment.mac?
17
17
 
18
- return @available if defined? @available
19
- cmd = 'brew list unox 2>&1 > /dev/null'
20
- @available = Environment.system(cmd)
21
- @available
18
+ cmd = 'brew list unox > /dev/null 2>&1'
19
+ Environment.system(cmd)
22
20
  end
23
21
 
24
22
  def self.ensure!
@@ -4,11 +4,13 @@ module DockerSync
4
4
  module Environment
5
5
  def self.linux?
6
6
  return @linux if defined? @linux
7
+
7
8
  @linux = OS.linux?
8
9
  end
9
10
 
10
11
  def self.mac?
11
12
  return @mac if defined? @mac
13
+
12
14
  @mac = OS.mac?
13
15
  end
14
16
 
@@ -17,7 +19,7 @@ module DockerSync
17
19
  end
18
20
 
19
21
  def self.system(cmd)
20
- defined?(Bundler) ? Bundler.clean_system(cmd) : Kernel.system(cmd)
22
+ defined?(Bundler) ? Bundler.unbundled_system(cmd) : Kernel.system(cmd)
21
23
  end
22
24
  end
23
25
  end
@@ -48,7 +48,7 @@ module DockerSync
48
48
  end
49
49
 
50
50
  if @config_syncs[name].key?('dest')
51
- puts 'Please do no longer use "dest" in your docker-sync.yml configuration - also see https://github.com/EugenMayer/docker-sync/wiki/1.2-Upgrade-Guide#dest-has-been-removed!'
51
+ puts 'Please do no longer use "dest" in your docker-sync.yml configuration - also see https://docker-sync.readthedocs.io/en/latest/getting-started/upgrade.html#id4'
52
52
  exit 1
53
53
  else
54
54
  @config_syncs[name]['dest'] = '/app_sync'
@@ -23,7 +23,7 @@ module DockerSync
23
23
  if @options.key?('image')
24
24
  @docker_image = @options['image']
25
25
  else
26
- @docker_image = 'eugenmayer/unison:2.51.2.1'
26
+ @docker_image = 'eugenmayer/unison:2.51.3-4.12.0-AMD64'
27
27
  end
28
28
 
29
29
  begin
@@ -14,16 +14,16 @@ module DockerSync
14
14
  @sync_name
15
15
  @watch_thread
16
16
  @local_server_pid
17
- UNISON_CONTAINER_PORT = '5000'
17
+ UNISON_CONTAINER_PORT = '5000'.freeze
18
18
  def initialize(sync_name, options)
19
19
  @options = options
20
20
  @sync_name = sync_name
21
21
  # if a custom image is set, apply it
22
- if @options.key?('image')
23
- @docker_image = @options['image']
24
- else
25
- @docker_image = 'eugenmayer/unison:2.51.2.2'
26
- end
22
+ @docker_image = if @options.key?('image')
23
+ @options['image']
24
+ else
25
+ 'eugenmayer/unison:2.51.3-4.12.0-AMD64'
26
+ end
27
27
  begin
28
28
  Dependencies::Unison.ensure!
29
29
  Dependencies::Unox.ensure! if Environment.mac?
@@ -61,7 +61,7 @@ module DockerSync
61
61
 
62
62
  def watch
63
63
  args = sync_options
64
- args.push("-repeat watch")
64
+ args.push('-repeat watch')
65
65
  cmd = ''
66
66
  cmd = cmd + 'ulimit -n ' + @options['max_inotify_watches'].to_s + ' && ' if @options.key?('max_inotify_watches')
67
67
  cmd = cmd + 'unison ' + args.join(' ')
@@ -77,18 +77,18 @@ module DockerSync
77
77
  say_status 'command', cmd, :white if @options['verbose']
78
78
 
79
79
  stdout, stderr, exit_status = Open3.capture3(cmd)
80
- if not exit_status.success?
80
+ if !exit_status.success?
81
81
  say_status 'error', "Error starting sync, exit code #{$?.exitstatus}", :red
82
82
  say_status 'message', stdout
83
83
  say_status 'message', stderr
84
84
  else
85
- TerminalNotifier.notify(
86
- "Synced #{@options['src']}", :title => @sync_name
87
- ) if @options['notify_terminal']
88
- say_status 'ok', "Synced #{@options['src']}", :white
89
- if @options['verbose']
90
- say_status 'output', stdout
85
+ if @options['notify_terminal']
86
+ TerminalNotifier.notify(
87
+ "Synced #{@options['src']}", title: @sync_name
88
+ )
91
89
  end
90
+ say_status 'ok', "Synced #{@options['src']}", :white
91
+ say_status 'output', stdout if @options['verbose']
92
92
  end
93
93
  end
94
94
 
@@ -96,18 +96,16 @@ module DockerSync
96
96
  expanded_ignore_strings = []
97
97
 
98
98
  exclude_type = 'Name'
99
- unless @options['sync_excludes_type'].nil?
100
- exclude_type = @options['sync_excludes_type']
101
- end
99
+ exclude_type = @options['sync_excludes_type'] unless @options['sync_excludes_type'].nil?
102
100
 
103
101
  unless @options['sync_excludes'].nil?
104
102
  expanded_ignore_strings = @options['sync_excludes'].map do |pattern|
105
- if exclude_type == 'none'
106
- # the ignore type like Name / Path are part of the pattern
107
- ignore_string = "#{pattern}"
108
- else
109
- ignore_string = "#{exclude_type} #{pattern}"
110
- end
103
+ ignore_string = if exclude_type == 'none'
104
+ # the ignore type like Name / Path are part of the pattern
105
+ pattern.to_s
106
+ else
107
+ "#{exclude_type} #{pattern}"
108
+ end
111
109
  "-ignore='#{ignore_string}'"
112
110
  end
113
111
  end
@@ -128,32 +126,33 @@ module DockerSync
128
126
  if @options.key?('sync_group') || @options.key?('sync_groupid')
129
127
  raise('Unison does not support sync_group, sync_groupid - please use rsync if you need that')
130
128
  end
131
- return args
129
+
130
+ args
132
131
  end
133
132
 
134
133
  # cares about conflict resolution
135
134
  def sync_prefer
136
135
  case @options.fetch('sync_prefer', 'default')
137
- when 'default' then "-prefer '#{@options['src']}' -copyonconflict" # thats our default, if nothing is set
138
- when 'src' then "-prefer '#{@options['src']}'"
139
- when 'dest' then "-prefer 'socket://#{@options['sync_host_ip']}:#{sync_host_port}'"
140
- else "-prefer '#{@options['sync_prefer']}'"
136
+ when 'default' then "-prefer '#{@options['src']}' -copyonconflict" # thats our default, if nothing is set
137
+ when 'src' then "-prefer '#{@options['src']}'"
138
+ when 'dest' then "-prefer 'socket://#{@options['sync_host_ip']}:#{sync_host_port}'"
139
+ else "-prefer '#{@options['sync_prefer']}'"
141
140
  end
142
141
  end
143
142
 
144
-
145
143
  def start_container
146
144
  say_status 'ok', "Starting unison for sync #{@sync_name}", :white
147
145
 
148
146
  container_name = get_container_name
149
147
  volume_name = get_volume_name
150
148
  env = {}
151
- raise 'sync_user is no longer supported, since it ise no needed, use sync_userid only please' if @options.key?('sync_user')
149
+ if @options.key?('sync_user')
150
+ raise 'sync_user is no longer supported, since it ise no needed, use sync_userid only please'
151
+ end
152
152
 
153
153
  env['UNISON_SRC'] = '-socket 5000'
154
154
  env['UNISON_DEST'] = '/app_sync'
155
155
 
156
-
157
156
  env['MONIT_ENABLE'] = 'false'
158
157
  env['MONIT_INTERVAL'] = ''
159
158
  env['MONIT_HIGH_CPU_CYCLES'] = ''
@@ -171,17 +170,19 @@ module DockerSync
171
170
  end
172
171
 
173
172
  # start unison-image in unison socket mode mode
174
- env['HOSTSYNC_ENABLE']=0
175
- env['UNISONSOCKET_ENABLE']=1
173
+ env['HOSTSYNC_ENABLE'] = 0
174
+ env['UNISONSOCKET_ENABLE'] = 1
176
175
 
177
- additional_docker_env = env.map{ |key,value| "-e #{key}=\"#{value}\"" }.join(' ')
176
+ additional_docker_env = env.map { |key, value| "-e #{key}=\"#{value}\"" }.join(' ')
178
177
  running = `docker ps --filter 'status=running' --filter 'name=#{container_name}' --format "{{.Names}}" | grep '^#{container_name}$'`
179
178
  if running == ''
180
179
  say_status 'ok', "#{container_name} container not running", :white if @options['verbose']
181
180
  exists = `docker ps --filter "status=exited" --filter "name=#{container_name}" --format "{{.Names}}" | grep '^#{container_name}$'`
182
181
  if exists == ''
183
182
  run_privileged = ''
184
- run_privileged = '--privileged' if @options.key?('max_inotify_watches') #TODO: replace by the minimum capabilities required
183
+ if @options.key?('max_inotify_watches')
184
+ run_privileged = '--privileged'
185
+ end # TODO: replace by the minimum capabilities required
185
186
  tz_expression = '-e TZ=$(basename $(dirname `readlink /etc/localtime`))/$(basename `readlink /etc/localtime`)'
186
187
  say_status 'ok', 'Starting precopy', :white if @options['verbose']
187
188
  # we just run the precopy script and remove the container
@@ -204,7 +205,7 @@ module DockerSync
204
205
  say_status 'ok', "starting initial sync of #{container_name}", :white if @options['verbose']
205
206
  # wait until container is started, then sync:
206
207
  sync_host_port = get_host_port(get_container_name, UNISON_CONTAINER_PORT)
207
- cmd = "unison -testserver #{@options['dest']} \"socket://#{@options['sync_host_ip']}:#{sync_host_port}\""
208
+ cmd = "unison -testserver #{@options['src']} \"socket://#{@options['sync_host_ip']}:#{sync_host_port}\""
208
209
  say_status 'command', cmd, :white if @options['verbose']
209
210
  attempt = 0
210
211
  max_attempt = @options['max_attempt'] || 5
@@ -212,8 +213,12 @@ module DockerSync
212
213
  # noinspection RubyUnusedLocalVariable
213
214
  stdout, stderr, exit_status = Open3.capture3(cmd)
214
215
  break if exit_status == 0
216
+
215
217
  attempt += 1
216
- raise "Failed to start unison container in time, try to increase max_attempt (currently #{max_attempt}) in your configuration. See https://github.com/EugenMayer/docker-sync/wiki/2.-Configuration for more informations" if attempt > max_attempt
218
+ if attempt > max_attempt
219
+ raise "Failed to start unison container in time, try to increase max_attempt (currently #{max_attempt}) in your configuration. See https://github.com/EugenMayer/docker-sync/wiki/2.-Configuration for more informations"
220
+ end
221
+
217
222
  sleep 1
218
223
  end
219
224
  sync
@@ -221,7 +226,7 @@ module DockerSync
221
226
  end
222
227
 
223
228
  # noinspection RubyUnusedLocalVariable
224
- def get_host_port(container_name, container_port)
229
+ def get_host_port(container_name, _container_port)
225
230
  cmd = 'docker inspect --format=\'{{(index (index .NetworkSettings.Ports "5000/tcp") 0).HostPort}}\' ' + container_name
226
231
  say_status 'command', cmd, :white if @options['verbose']
227
232
  stdout, stderr, exit_status = Open3.capture3(cmd)
@@ -230,15 +235,15 @@ module DockerSync
230
235
  say_status 'error', "Error getting mapped port, exit code #{$?.exitstatus}", :red
231
236
  say_status 'message', stderr
232
237
  end
233
- return stdout.gsub("\n",'')
238
+ stdout.gsub("\n", '')
234
239
  end
235
240
 
236
241
  def get_container_name
237
- return "#{@sync_name}"
242
+ @sync_name.to_s
238
243
  end
239
244
 
240
245
  def get_volume_name
241
- return @sync_name
246
+ @sync_name
242
247
  end
243
248
 
244
249
  def stop_container
@@ -93,7 +93,7 @@ class UpdateChecker
93
93
  say_status 'warning',"There is an update (#{check.latest_version}) available (current version #{check.current_version}). Please update before you continue",:yellow
94
94
  if yes?("Shall I update docker-sync to #{check.latest_version} for you?")
95
95
  if system('gem update docker-sync')
96
- say_status 'success','Successfully updated, please restart docker-sync and check the changelog at https://github.com/EugenMayer/docker-sync/wiki/5.-Changelog',:green
96
+ say_status 'success','Successfully updated, please restart docker-sync and check the changelog at https://github.com/EugenMayer/docker-sync/releases',:green
97
97
  exit 0
98
98
  else
99
99
  say_status 'error','Unable to update docker-sync',:red
data/tasks/sync/sync.thor CHANGED
@@ -79,6 +79,17 @@ class Sync < Thor
79
79
 
80
80
  end
81
81
 
82
+ desc 'restart', 'Restart docker-sync daemon'
83
+ method_option :daemon, :aliases => '-d', :default => false, :type => :boolean, :desc => 'Run in the background'
84
+ method_option :foreground, :aliases => '-f', :default => false, :type => :boolean, :desc => 'Run in the foreground'
85
+ method_option :app_name, :aliases => '--name', :default => 'daemon', :type => :string, :desc => 'App name used in PID and OUTPUT file name for Daemon'
86
+ method_option :dir, :aliases => '--dir', :default => './.docker-sync', :type => :string, :desc => 'Path to PID and OUTPUT file Directory'
87
+ method_option :logd, :aliases => '--logd', :default => true, :type => :boolean, :desc => 'To log OUPUT to file on Daemon or not'
88
+ def restart
89
+ invoke :stop, options.select{|k, _| ["app_name", "dir"].include?(k) }
90
+ invoke :start
91
+ end
92
+
82
93
  desc 'sync', 'just sync - do not start a watcher though'
83
94
  def sync
84
95
  print_version if options[:version]
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.5.14
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugen Mayer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-23 00:00:00.000000000 Z
11
+ date: 2021-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.20'
19
+ version: '1.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.20.0
22
+ version: 1.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.20'
29
+ version: '1.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.20.0
32
+ version: 1.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: gem_update_checker
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -209,7 +209,7 @@ homepage: https://github.com/EugenMayer/docker_sync
209
209
  licenses:
210
210
  - GPL-3.0
211
211
  metadata: {}
212
- post_install_message:
212
+ post_install_message:
213
213
  rdoc_options: []
214
214
  require_paths:
215
215
  - lib
@@ -217,16 +217,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
217
  requirements:
218
218
  - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: '2.0'
220
+ version: '2.4'
221
221
  required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  requirements:
223
223
  - - ">="
224
224
  - !ruby/object:Gem::Version
225
225
  version: '0'
226
226
  requirements: []
227
- rubyforge_project:
228
- rubygems_version: 2.6.14.3
229
- signing_key:
227
+ rubygems_version: 3.1.4
228
+ signing_key:
230
229
  specification_version: 4
231
230
  summary: Docker Sync - Fast and efficient way to sync code to docker-containers
232
231
  test_files: []