vagrant-syncer 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b63ad4d5959b021a757e370b28dc00afbaf17fdb
4
- data.tar.gz: 28100efa5de0c18e4bfb87f3877afaf8b233bf29
3
+ metadata.gz: ddd963382d77f2cf8809225b08b3072d8af37fb5
4
+ data.tar.gz: 2fba2298a98e17e527b46d412dc13183bbfc3145
5
5
  SHA512:
6
- metadata.gz: 9ecc08db460cfd9f6925024ec4e707e98eeb4b0ac52e196adaf4c990bc2a21cbab638144b85be24e2cf2a3571554bacdaa31693a13e4b210543e95d10a896558
7
- data.tar.gz: e714a252e4669fd01c7439043513ea5219e7c636f408805752cdeddd28859bfbfd708c7cad5a525d008907135964262d5114267424db8b0cf4c3aaf4afe70dec
6
+ metadata.gz: bffe66c12c22d82c09da1e7be491846a039afbe3d993819134094e99a91dd95f612c06c3889ca2dcc399d2ced74130be2cba74ebc7bfc5103b7cfe1de88f5351
7
+ data.tar.gz: 01a43a58085be761482795941336236e8d8b2e9c784b74c7d3bc4cc6c4ab35371cbdf07031088aa5e6189175b16e49300391883fef805529e68be4aad014783c
data/example/Vagrantfile CHANGED
@@ -12,6 +12,13 @@ Vagrant.configure(2) do |config|
12
12
 
13
13
  config.vm.synced_folder '.', '/vagrant', disabled: true
14
14
 
15
+ config.vm.synced_folder "dotfiles", "/home/vagrant", type: 'rsync',
16
+ rsync__args: [
17
+ "--archive",
18
+ "--out-format=%L%n"
19
+ ],
20
+ rsync__verbose: true
21
+
15
22
  config.vm.synced_folder "files", "/home/vagrant/files", type: 'rsync',
16
23
  rsync__args: [
17
24
  "--archive",
@@ -0,0 +1,79 @@
1
+ COLOR tty
2
+
3
+ TERM ansi
4
+ TERM color_xterm
5
+ TERM color-xterm
6
+ TERM con132x25
7
+ TERM con132x30
8
+ TERM con132x43
9
+ TERM con132x60
10
+ TERM con80x25
11
+ TERM con80x28
12
+ TERM con80x30
13
+ TERM con80x43
14
+ TERM con80x50
15
+ TERM con80x60
16
+ TERM cons25
17
+ TERM console
18
+ TERM cygwin
19
+ TERM dtterm
20
+ TERM dvtm
21
+ TERM dvtm-256color
22
+ TERM Eterm
23
+ TERM eterm-color
24
+ TERM fbterm
25
+ TERM gnome
26
+ TERM gnome-256color
27
+ TERM jfbterm
28
+ TERM konsole
29
+ TERM konsole-256color
30
+ TERM kterm
31
+ TERM linux
32
+ TERM linux-c
33
+ TERM mach-color
34
+ TERM mlterm
35
+ TERM nxterm
36
+ TERM putty
37
+ TERM putty-256color
38
+ TERM rxvt
39
+ TERM rxvt-256color
40
+ TERM rxvt-cygwin
41
+ TERM rxvt-cygwin-native
42
+ TERM rxvt-unicode
43
+ TERM rxvt-unicode256
44
+ TERM rxvt-unicode-256color
45
+ TERM screen
46
+ TERM screen-16color
47
+ TERM screen-16color-bce
48
+ TERM screen-16color-s
49
+ TERM screen-16color-bce-s
50
+ TERM screen-256color
51
+ TERM screen-256color-bce
52
+ TERM screen-256color-s
53
+ TERM screen-256color-bce-s
54
+ TERM screen-bce
55
+ TERM screen-w
56
+ TERM screen.linux
57
+ TERM screen.xterm-new
58
+ TERM st
59
+ TERM st-meta
60
+ TERM st-256color
61
+ TERM st-meta-256color
62
+ TERM vt100
63
+ TERM xterm
64
+ TERM xterm-new
65
+ TERM xterm-16color
66
+ TERM xterm-256color
67
+ TERM xterm-88color
68
+ TERM xterm-color
69
+ TERM xterm-debian
70
+ TERM xterm-termite
71
+
72
+ EIGHTBIT 1
73
+
74
+ # Directories
75
+ DIR 01;36 # bolded;cyan
76
+
77
+ # Plain text files
78
+ .txt 32 # green
79
+ .not 31 # red
@@ -5,8 +5,8 @@ module Vagrant
5
5
  module Listeners
6
6
  class FSEvents
7
7
 
8
- def initialize(absolute_path, excludes, settings, callback)
9
- @absolute_path = absolute_path
8
+ def initialize(paths, excludes, settings, callback)
9
+ @paths = paths
10
10
  @settings = settings.merge!(no_defer: false)
11
11
  @callback = callback
12
12
  # rb-fsevent does not support excludes.
@@ -15,7 +15,7 @@ module Vagrant
15
15
  def run
16
16
  changes = Queue.new
17
17
  fsevent = FSEvent.new
18
- fsevent.watch @absolute_path, @settings do |paths|
18
+ fsevent.watch @paths, @settings do |paths|
19
19
  paths.each { |path| changes << path }
20
20
  end
21
21
  Thread.new { fsevent.run }
@@ -5,8 +5,8 @@ module Vagrant
5
5
  module Listeners
6
6
  class INotify
7
7
 
8
- def initialize(absolute_path, excludes, settings, callback)
9
- @absolute_path = absolute_path
8
+ def initialize(paths, excludes, settings, callback)
9
+ @paths = paths
10
10
  @settings = settings
11
11
  @callback = callback
12
12
  # rb-inotify does not support excludes.
@@ -14,7 +14,10 @@ module Vagrant
14
14
 
15
15
  def run
16
16
  notifier = ::INotify::Notifier.new
17
- notifier.watch(@absolute_path, :modify, :create, :delete, :recursive) {}
17
+
18
+ @paths.each do |path|
19
+ notifier.watch(path, :modify, :create, :delete, :recursive) {}
20
+ end
18
21
 
19
22
  loop do
20
23
  directories = Set.new
@@ -1,5 +1,4 @@
1
1
  require 'listen'
2
- require 'vagrant/util/busy'
3
2
 
4
3
  module Vagrant
5
4
  module Syncer
@@ -22,12 +21,14 @@ module Vagrant
22
21
  Regexp.new(pattern)
23
22
  end
24
23
 
25
- def initialize(absolute_path, excludes, settings, callback)
26
- @absolute_path = absolute_path
24
+ def initialize(paths, excludes, settings, callback)
25
+ @paths = paths
27
26
  @settings = settings
28
- @callback = callback
27
+ @callback = Proc.new do |mod, add, rem|
28
+ callback.call(mod + add + rem)
29
+ end
29
30
 
30
- if excludes
31
+ if excludes.any?
31
32
  @settings[:ignore!] = []
32
33
  excludes.each do |pattern|
33
34
  @settings[:ignore!] << self.class.excludes_to_listen(pattern.to_s)
@@ -36,11 +37,7 @@ module Vagrant
36
37
  end
37
38
 
38
39
  def run
39
- listener = ::Listen.to(@absolute_path, @settings) do |mod, add, rem|
40
- @callback.call(mod + add + rem)
41
- end
42
-
43
- listener.start
40
+ ::Listen.to(*@paths, @settings, &@callback).start
44
41
  sleep
45
42
  end
46
43
  end
@@ -1,5 +1,7 @@
1
1
  require 'vagrant/action/builtin/mixin_synced_folders'
2
2
 
3
+ require_relative 'syncers/rsync'
4
+
3
5
  module Vagrant
4
6
  module Syncer
5
7
  class Machine
@@ -8,28 +10,84 @@ module Vagrant
8
10
 
9
11
  def initialize(machine, polling=false)
10
12
  @paths = []
13
+ @syncers = []
14
+ @excludes = []
15
+ @logger = machine.ui
16
+
17
+ @listener_verbose = machine.config.syncer.show_events
18
+ @listener_interval = machine.config.syncer.interval
19
+
20
+ listener_settings = {
21
+ latency: @listener_interval,
22
+ wait_for_delay: @listener_interval / 2
23
+ }
11
24
 
12
- cached = synced_folders(machine, cached: true)
13
- fresh = synced_folders(machine)
14
- diff = synced_folders_diff(cached, fresh)
15
- if !diff[:added].empty?
16
- machine.ui.warn(I18n.t("vagrant.rsync_auto_new_folders"))
25
+ if polling
26
+ require_relative 'listeners/listen'
27
+ @listener_class = Vagrant::Syncer::Listeners::Listen
28
+ listener_settings[:force_polling] = polling
29
+ elsif machine.config.syncer.force_listen_gem
30
+ require_relative 'listeners/listen'
31
+ @listener_class = Vagrant::Syncer::Listeners::Listen
32
+ else
33
+ case Vagrant::Util::Platform.platform
34
+ when /darwin/
35
+ require_relative 'listeners/fsevents'
36
+ @listener_class = Vagrant::Syncer::Listeners::FSEvents
37
+ when /linux/
38
+ require_relative 'listeners/inotify'
39
+ @listener_class = Vagrant::Syncer::Listeners::INotify
40
+ else
41
+ require_relative 'listeners/listen'
42
+ @listener_class = Vagrant::Syncer::Listeners::Listen
43
+ end
17
44
  end
18
45
 
19
- folders = cached[:rsync]
20
- return unless folders
46
+ @listener_name = @listener_class.to_s.gsub(/^.*::/, '')
21
47
 
22
- folders.each do |id, folder_opts|
23
- @paths << Path.new(folder_opts, machine, polling)
48
+ synced_folders(machine)[:rsync].each do |id, folder_opts|
49
+ @paths << File.expand_path(folder_opts[:hostpath], machine.env.root_path)
50
+ @excludes << folder_opts[:rsync__excludes] if folder_opts[:rsync__excludes]
51
+ @syncers << Syncers::Rsync.new(folder_opts, machine)
24
52
  end
53
+
54
+ @listener = @listener_class.new(
55
+ @paths,
56
+ @excludes,
57
+ listener_settings,
58
+ change_callback
59
+ )
25
60
  end
26
61
 
27
62
  def full_sync
28
- @paths.each(&:initial_sync)
63
+ @syncers.each do |syncer|
64
+ syncer.sync([syncer.host_path])
65
+ end
29
66
  end
30
67
 
31
68
  def listen
32
- @paths.each(&:listen)
69
+ text = @listener_polling ? 'syncer.states.polling' : 'syncer.states.watching'
70
+ @paths.each do |path|
71
+ @logger.info(I18n.t(text, {
72
+ path: path,
73
+ listener: @listener_name,
74
+ interval: @listener_interval
75
+ }))
76
+ end
77
+ @listener.run
78
+ end
79
+
80
+ private
81
+
82
+ def change_callback
83
+ Proc.new do |changed|
84
+ if @listener_verbose
85
+ @logger.info(@listener_name + ": " + changed.join(', '))
86
+ end
87
+ @syncers.each do |syncer|
88
+ syncer.sync(changed)
89
+ end
90
+ end
33
91
  end
34
92
 
35
93
  end
@@ -6,15 +6,17 @@ module Vagrant
6
6
  module Syncers
7
7
  class Rsync
8
8
 
9
+ attr_reader :host_path
10
+
9
11
  def initialize(path_opts, machine)
10
12
  @machine = machine
11
13
  @logger = machine.ui
12
14
 
13
15
  @machine_path = machine.env.root_path.to_s
14
16
  @host_path = parse_host_path(path_opts[:hostpath])
17
+ @rsync_verbose = path_opts[:rsync__verbose] || false
15
18
  @rsync_args = parse_rsync_args(path_opts[:rsync__args],
16
19
  path_opts[:rsync__rsync_path])
17
- @rsync_verbose = path_opts[:rsync__verbose] || false
18
20
  @ssh_command = parse_ssh_command(machine.config.syncer.ssh_args)
19
21
  @exclude_args = parse_exclude_args(path_opts[:rsync__exclude])
20
22
 
@@ -119,12 +121,10 @@ module Vagrant
119
121
  end
120
122
 
121
123
  def parse_rsync_args(rsync_args=nil, rsync_path=nil)
122
- rsync_args ||= ["--archive", "--delete", "--compress", "--copy-links",
123
- "--verbose"]
124
+ rsync_args ||= ["--archive", "--delete", "--compress", "--copy-links"]
124
125
 
125
- # The default rsync output, later user opt --out-format arguments
126
- # take presence.
127
- rsync_args.unshift("--out-format=%L%n")
126
+ # This implies --verbose, set nicer output by default
127
+ rsync_args.unshift("--out-format=%L/%f") if @rsync_verbose
128
128
 
129
129
  rsync_chmod_args_given = rsync_args.any? { |arg|
130
130
  arg.start_with?("--chmod=")
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Syncer
3
- VERSION = "1.0.7"
3
+ VERSION = "1.0.8"
4
4
  end
5
5
  end
@@ -6,7 +6,6 @@ end
6
6
 
7
7
  require 'syncer/actions'
8
8
  require 'syncer/machine'
9
- require 'syncer/path'
10
9
  require 'syncer/plugin'
11
10
  require 'syncer/version'
12
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-syncer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anssi Syrjäsalo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-11 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,6 +57,7 @@ files:
57
57
  - bin/setup
58
58
  - build_and_install.sh
59
59
  - example/Vagrantfile
60
+ - example/dotfiles/.dircolors
60
61
  - example/files/directory/excluded_directory/yes.txt
61
62
  - example/files/directory/file_in_directory.txt
62
63
  - example/files/directory/nested_directory/excluded_directory/yes.txt
@@ -80,7 +81,6 @@ files:
80
81
  - lib/syncer/listeners/inotify.rb
81
82
  - lib/syncer/listeners/listen.rb
82
83
  - lib/syncer/machine.rb
83
- - lib/syncer/path.rb
84
84
  - lib/syncer/plugin.rb
85
85
  - lib/syncer/synced_folder.rb
86
86
  - lib/syncer/syncers/rsync.rb
data/lib/syncer/path.rb DELETED
@@ -1,84 +0,0 @@
1
- require 'vagrant/util/platform'
2
-
3
- require_relative 'syncers/rsync'
4
-
5
- module Vagrant
6
- module Syncer
7
- class Path
8
-
9
- def initialize(path_opts, machine, listener_polling=false)
10
- @logger = machine.ui
11
- @source_path = path_opts[:hostpath]
12
- @syncer = Syncers::Rsync.new(path_opts, machine)
13
- @absolute_path = File.expand_path(@source_path, machine.env.root_path)
14
-
15
- @listener_polling = listener_polling
16
- @listener_verbose = machine.config.syncer.show_events
17
- @listener_interval = machine.config.syncer.interval
18
- @force_listen_gem = machine.config.syncer.force_listen_gem
19
-
20
- listener_settings = {
21
- latency: @listener_interval,
22
- wait_for_delay: @listener_interval / 2
23
- }
24
-
25
- if @listener_polling
26
- require_relative 'listeners/listen'
27
- @listener_class = Vagrant::Syncer::Listeners::Listen
28
- listener_settings[:force_polling] = @listener_polling
29
- elsif @force_listen_gem
30
- require_relative 'listeners/listen'
31
- @listener_class = Vagrant::Syncer::Listeners::Listen
32
- else
33
- case Vagrant::Util::Platform.platform
34
- when /darwin/
35
- require_relative 'listeners/fsevents'
36
- @listener_class = Vagrant::Syncer::Listeners::FSEvents
37
- when /linux/
38
- require_relative 'listeners/inotify'
39
- @listener_class = Vagrant::Syncer::Listeners::INotify
40
- else
41
- require_relative 'listeners/listen'
42
- @listener_class = Vagrant::Syncer::Listeners::Listen
43
- end
44
- end
45
-
46
- @listener_name = @listener_class.to_s.gsub(/^.*::/, '')
47
-
48
- @listener = @listener_class.new(
49
- @absolute_path,
50
- path_opts[:rsync__excludes],
51
- listener_settings,
52
- change_callback
53
- )
54
- end
55
-
56
- def initial_sync
57
- @logger.info(I18n.t('syncer.states.initial', path: @absolute_path))
58
- @syncer.sync([@source_path])
59
- end
60
-
61
- def listen
62
- text = @listener_polling ? 'syncer.states.polling' : 'syncer.states.watching'
63
- @logger.info(I18n.t(text, {
64
- path: @absolute_path,
65
- listener: @listener_name,
66
- interval: @listener_interval
67
- }))
68
- @listener.run
69
- end
70
-
71
- private
72
-
73
- def change_callback
74
- Proc.new do |changed|
75
- if @listener_verbose
76
- @logger.info(@listener_name + ": " + changed.join(', '))
77
- end
78
- @syncer.sync(changed)
79
- end
80
- end
81
-
82
- end
83
- end
84
- end