filewatcher 2.1.0 → 3.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
  SHA256:
3
- metadata.gz: f152abad4db37d701c171c006aa348be75d484a57b5dad570fdb7f9fa9f8e613
4
- data.tar.gz: 3ac3b63272cee0295bac2eaefbf131a0933aeea5d0749d61cd8b3d214786a2ee
3
+ metadata.gz: 25f23553b187f2173b966b5a278bf7948f855390b5184196626b417b5ac1b190
4
+ data.tar.gz: 469558d39224bf9116d9b54a99ac962de9f6a22db295f28b5fae65c2f3808672
5
5
  SHA512:
6
- metadata.gz: 944582ed2ecdc9ccd42d562be7ea38a8a242bef6e9798b14d1b93f900926c7ceb0014afabbe39ea41af4d398fd5331ccc378bcb5d0d910aecbe68af60d4b0226
7
- data.tar.gz: f772e16b48e71a6e0dfc433cb9b50286e742c753dfc7564fe6eaf367d17b03542e3377acd4943fe5ae440d6079053de5b964f5e6224d5f5ff9124925e1dc9af5
6
+ metadata.gz: b044368afdc3d968e9ec27d726133e7fb64508411a2e15dba47c0492c059dc95bac3c6d3844c957d97f4dee815582efd5ca8dc75b535ad0040860600aadc1449
7
+ data.tar.gz: 1fd293c552bc6dfc32a3dbca59aae016b5b294a8012174b15a11ee44ca16e0cd1d0666ddd38b1449981b29c080531656865e19cde089d026b905c7d238f2797f
@@ -6,7 +6,8 @@ class Filewatcher
6
6
  # Class for snapshots of file system
7
7
  class Snapshot
8
8
  extend Forwardable
9
- def_delegators :@data, :[], :each, :keys
9
+
10
+ def_delegators :@data, :[], :each, :each_key, :keys
10
11
 
11
12
  def initialize(filenames)
12
13
  @data = filenames.each_with_object({}) do |filename, data|
@@ -21,7 +22,7 @@ class Filewatcher
21
22
  changes[filename] = snapshot_file - other[filename]
22
23
  end
23
24
 
24
- other.each do |filename, _snapshot_file|
25
+ other.each_key do |filename|
25
26
  changes[filename] = :deleted unless self[filename]
26
27
  end
27
28
 
@@ -36,18 +37,18 @@ class Filewatcher
36
37
  end
37
38
 
38
39
  def populate_stats(stats)
39
- defined?(super) ? super(stats) : stats
40
+ defined?(super) ? super : stats
40
41
  end
41
42
 
42
43
  def subtractions
43
44
  @subtractions ||= populate_subtractions(
44
- created: ->(other) { other.nil? },
45
+ created: lambda(&:nil?),
45
46
  updated: ->(other) { mtime && mtime > other.mtime }
46
47
  )
47
48
  end
48
49
 
49
50
  def populate_subtractions(hash)
50
- hash = super(hash) if defined?(super)
51
+ hash = super if defined?(super)
51
52
  hash
52
53
  end
53
54
  end
@@ -40,7 +40,7 @@ class Filewatcher
40
40
  end
41
41
 
42
42
  def wait(seconds: 1)
43
- super seconds: seconds, interval: filewatcher.interval
43
+ super(seconds: seconds, interval: filewatcher.interval)
44
44
  end
45
45
 
46
46
  private
@@ -12,7 +12,26 @@ class Filewatcher
12
12
 
13
13
  TMP_DIR = 'spec/tmp'
14
14
  ## It's requried to split modifying files from result files like CLI dumpers
15
- TMP_FILES_DIR = "#{TMP_DIR}/files"
15
+ TMP_FILES_DIR = "#{TMP_DIR}/files".freeze
16
+
17
+ create_update_action = lambda do |change_file, change_data|
18
+ new_content = change_data.fetch(:content, 'content2')
19
+
20
+ FileUtils.mkdir_p File.dirname(change_file)
21
+
22
+ ## There is no `File.write` because of strange difference in parallel `File.mtime`
23
+ ## https://cirrus-ci.com/task/6107605053472768?command=test#L497-L511
24
+ system "echo '#{new_content}' > #{change_file}"
25
+
26
+ debug_file_mtime(change_file)
27
+ end.freeze
28
+
29
+ CHANGES = {
30
+ create: create_update_action,
31
+ update: create_update_action,
32
+ create_dir: ->(change_file, *_args) { FileUtils.mkdir_p(change_file) },
33
+ delete: ->(change_file, *_args) { FileUtils.remove(change_file) }
34
+ }.freeze
16
35
 
17
36
  attr_reader :initial_files
18
37
 
@@ -73,25 +92,6 @@ class Filewatcher
73
92
 
74
93
  private
75
94
 
76
- create_update_action = lambda do |change_file, change_data|
77
- new_content = change_data.fetch(:content, 'content2')
78
-
79
- FileUtils.mkdir_p File.dirname(change_file)
80
-
81
- ## There is no `File.write` because of strange difference in parallel `File.mtime`
82
- ## https://cirrus-ci.com/task/6107605053472768?command=test#L497-L511
83
- system "echo '#{new_content}' > #{change_file}"
84
-
85
- debug_file_mtime(change_file)
86
- end.freeze
87
-
88
- CHANGES = {
89
- create: create_update_action,
90
- update: create_update_action,
91
- create_dir: ->(change_file, *_args) { FileUtils.mkdir_p(change_file) },
92
- delete: ->(change_file, *_args) { FileUtils.remove(change_file) }
93
- }.freeze
94
-
95
95
  def make_changes
96
96
  @changes.each do |change_file, change_data|
97
97
  debug "make changes, change_file = #{change_file}, change_data = #{change_data}"
@@ -43,7 +43,7 @@ class Filewatcher
43
43
  end
44
44
  end
45
45
 
46
- def wait_with_block(seconds, interval, &_block)
46
+ def wait_with_block(seconds, interval, &)
47
47
  (seconds / interval).ceil.times do
48
48
  break if yield
49
49
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Filewatcher
4
- VERSION = '2.1.0'
4
+ VERSION = '3.0.0'
5
5
  end
data/spec/examples.txt CHANGED
@@ -1,10 +1,10 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------------ | ------ | --------------- |
3
- ./spec/filewatcher/snapshot_spec.rb[1:1:1] | passed | 0.00075 seconds |
3
+ ./spec/filewatcher/snapshot_spec.rb[1:1:1] | passed | 0.00101 seconds |
4
4
  ./spec/filewatcher/snapshot_spec.rb[1:2:1] | passed | 1 second |
5
- ./spec/filewatcher/version_spec.rb[1:1] | passed | 0.00079 seconds |
6
- ./spec/filewatcher_spec.rb[1:1:1] | passed | 0.01153 seconds |
7
- ./spec/filewatcher_spec.rb[1:2:1:1:1] | passed | 6.02 seconds |
5
+ ./spec/filewatcher/version_spec.rb[1:1] | passed | 0.00075 seconds |
6
+ ./spec/filewatcher_spec.rb[1:1:1] | passed | 0.01465 seconds |
7
+ ./spec/filewatcher_spec.rb[1:2:1:1:1] | passed | 6.01 seconds |
8
8
  ./spec/filewatcher_spec.rb[1:2:1:2:1] | passed | 5.01 seconds |
9
9
  ./spec/filewatcher_spec.rb[1:2:1:3:1] | passed | 5.01 seconds |
10
10
  ./spec/filewatcher_spec.rb[1:2:1:4:1] | passed | 5.01 seconds |
@@ -16,13 +16,13 @@ example_id | status | run_time |
16
16
  ./spec/filewatcher_spec.rb[1:2:2:2:1] | passed | 2 seconds |
17
17
  ./spec/filewatcher_spec.rb[1:2:2:2:2:1] | passed | 2 seconds |
18
18
  ./spec/filewatcher_spec.rb[1:3:1:1:1] | passed | 5.01 seconds |
19
- ./spec/filewatcher_spec.rb[1:3:1:2:1] | passed | 5.02 seconds |
19
+ ./spec/filewatcher_spec.rb[1:3:1:2:1] | passed | 5.01 seconds |
20
20
  ./spec/filewatcher_spec.rb[1:3:1:3:1] | passed | 5.01 seconds |
21
21
  ./spec/filewatcher_spec.rb[1:3:1:4:1] | passed | 5.01 seconds |
22
22
  ./spec/filewatcher_spec.rb[1:3:1:5:1] | passed | 5.01 seconds |
23
- ./spec/filewatcher_spec.rb[1:3:2:1] | passed | 2.01 seconds |
23
+ ./spec/filewatcher_spec.rb[1:3:2:1] | passed | 2 seconds |
24
24
  ./spec/filewatcher_spec.rb[1:4:1] | passed | 2 seconds |
25
25
  ./spec/filewatcher_spec.rb[1:5:1] | passed | 7.21 seconds |
26
26
  ./spec/filewatcher_spec.rb[1:6:1:1] | passed | 7.41 seconds |
27
- ./spec/filewatcher_spec.rb[1:6:2:1] | passed | 11.41 seconds |
27
+ ./spec/filewatcher_spec.rb[1:6:2:1] | passed | 11.61 seconds |
28
28
  ./spec/filewatcher_spec.rb[1:7:1] | passed | 6.01 seconds |
@@ -10,7 +10,7 @@ describe Filewatcher do
10
10
  logger.debug "FileUtils.rm_r #{tmp_dir}"
11
11
  FileUtils.rm_r tmp_dir if File.exist?(tmp_dir)
12
12
 
13
- Filewatcher::SpecHelper.wait seconds: 5, interval: 0.2 do
13
+ described_class::SpecHelper.wait seconds: 5, interval: 0.2 do
14
14
  !File.exist?(tmp_dir)
15
15
  end
16
16
  end
@@ -23,11 +23,11 @@ describe Filewatcher do
23
23
  ruby_watch_run_class.transform_spec_files(file)
24
24
  end
25
25
 
26
- let(:ruby_watch_run_class) { Filewatcher::SpecHelper::RubyWatchRun }
26
+ let(:ruby_watch_run_class) { described_class::SpecHelper::RubyWatchRun }
27
27
 
28
28
  let(:tmp_dir) { ruby_watch_run_class::TMP_DIR }
29
29
  let(:tmp_files_dir) { ruby_watch_run_class::TMP_FILES_DIR }
30
- let(:logger) { Filewatcher::SpecHelper.logger }
30
+ let(:logger) { described_class::SpecHelper.logger }
31
31
 
32
32
  let(:raw_file_name) { 'tmp_file.txt' }
33
33
  let(:initial_files) { { raw_file_name => {} } }
@@ -68,7 +68,7 @@ describe Filewatcher do
68
68
  subject(:method_call) { described_class.print_version }
69
69
 
70
70
  let(:ruby_version_regexp) { '(j|truffle)?ruby \d+\.\d+\.\d+.*' }
71
- let(:filewatcher_version_regexp) { "Filewatcher #{Filewatcher::VERSION}" }
71
+ let(:filewatcher_version_regexp) { "Filewatcher #{described_class::VERSION}" }
72
72
 
73
73
  it do
74
74
  expect { method_call }.to output(
@@ -124,22 +124,24 @@ describe Filewatcher do
124
124
  end
125
125
 
126
126
  context 'with Array of paths' do
127
- let(:file_1) { 'tmp_file_1.txt' }
127
+ let(:initial_file) { 'tmp_initial_file.txt' }
128
128
  let(:subdir) { 'subdir' }
129
- let(:file_2) { "#{subdir}/tmp_file_2.txt" }
129
+ let(:new_file) { "#{subdir}/tmp_new_file.txt" }
130
130
 
131
- let(:filewatcher_files) { ["#{tmp_files_dir}/#{file_1}", "#{tmp_files_dir}/#{subdir}"] }
131
+ let(:filewatcher_files) do
132
+ ["#{tmp_files_dir}/#{initial_file}", "#{tmp_files_dir}/#{subdir}"]
133
+ end
132
134
 
133
135
  let(:initial_files) do
134
136
  {
135
- file_1 => {}
137
+ initial_file => {}
136
138
  }
137
139
  end
138
140
 
139
141
  let(:changes) do
140
142
  initial_files.to_h { |key, _value| [transform_spec_files(key), { event: :update }] }
141
143
  .merge(
142
- transform_spec_files(file_2) => { event: :create }
144
+ transform_spec_files(new_file) => { event: :create }
143
145
  )
144
146
  end
145
147
 
@@ -147,14 +149,14 @@ describe Filewatcher do
147
149
  [
148
150
  initial_files.to_h { |key, _value| [transform_spec_files(key), :updated] }
149
151
  .merge(
150
- expected_file_2_change
152
+ expected_new_file_change
151
153
  )
152
154
  ]
153
155
  end
154
156
 
155
- let(:expected_file_2_change) do
157
+ let(:expected_new_file_change) do
156
158
  {
157
- transform_spec_files(file_2) => :created
159
+ transform_spec_files(new_file) => :created
158
160
  }
159
161
  end
160
162
 
@@ -163,7 +165,7 @@ describe Filewatcher do
163
165
  expect(processed).to eq(expected_changes)
164
166
  .or contain_exactly(
165
167
  *initial_files.map { |key, _value| { transform_spec_files(key) => :updated } },
166
- expected_file_2_change
168
+ expected_new_file_change
167
169
  )
168
170
  end
169
171
  end
@@ -298,7 +300,7 @@ describe Filewatcher do
298
300
  logger.debug 'filewatcher.pause'
299
301
  watch_run.filewatcher.pause
300
302
 
301
- Filewatcher::SpecHelper.wait seconds: 1
303
+ described_class::SpecHelper.wait seconds: 1
302
304
 
303
305
  write_tmp_files 1..4
304
306
  end
metadata CHANGED
@@ -1,184 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filewatcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Flemming
8
8
  - Alexander Popov
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2022-11-17 00:00:00.000000000 Z
11
+ date: 2026-02-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: module_methods
14
+ name: logger
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: 0.1.0
19
+ version: '1.7'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: 0.1.0
28
- - !ruby/object:Gem::Dependency
29
- name: bundler
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '2.0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '2.0'
42
- - !ruby/object:Gem::Dependency
43
- name: bundler-audit
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: 0.9.0
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: 0.9.0
56
- - !ruby/object:Gem::Dependency
57
- name: gem_toys
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: 0.12.1
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: 0.12.1
26
+ version: '1.7'
70
27
  - !ruby/object:Gem::Dependency
71
- name: toys
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: 0.14.2
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: 0.14.2
84
- - !ruby/object:Gem::Dependency
85
- name: codecov
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: 0.6.0
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 0.6.0
98
- - !ruby/object:Gem::Dependency
99
- name: rspec
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '3.8'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '3.8'
112
- - !ruby/object:Gem::Dependency
113
- name: simplecov
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: 0.21.0
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: 0.21.0
126
- - !ruby/object:Gem::Dependency
127
- name: simplecov-cobertura
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '2.1'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '2.1'
140
- - !ruby/object:Gem::Dependency
141
- name: rubocop
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: 1.39.0
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: 1.39.0
154
- - !ruby/object:Gem::Dependency
155
- name: rubocop-performance
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '1.5'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - "~>"
166
- - !ruby/object:Gem::Version
167
- version: '1.5'
168
- - !ruby/object:Gem::Dependency
169
- name: rubocop-rspec
28
+ name: module_methods
170
29
  requirement: !ruby/object:Gem::Requirement
171
30
  requirements:
172
31
  - - "~>"
173
32
  - !ruby/object:Gem::Version
174
- version: '2.0'
175
- type: :development
33
+ version: 0.1.0
34
+ type: :runtime
176
35
  prerelease: false
177
36
  version_requirements: !ruby/object:Gem::Requirement
178
37
  requirements:
179
38
  - - "~>"
180
39
  - !ruby/object:Gem::Version
181
- version: '2.0'
40
+ version: 0.1.0
182
41
  description: Detect changes in file system. Works anywhere.
183
42
  email:
184
43
  - thomas.flemming@gmail.com
@@ -205,7 +64,6 @@ licenses:
205
64
  - MIT
206
65
  metadata:
207
66
  rubygems_mfa_required: 'true'
208
- post_install_message:
209
67
  rdoc_options: []
210
68
  require_paths:
211
69
  - lib
@@ -213,18 +71,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
71
  requirements:
214
72
  - - ">="
215
73
  - !ruby/object:Gem::Version
216
- version: '2.6'
74
+ version: '3.2'
217
75
  - - "<"
218
76
  - !ruby/object:Gem::Version
219
- version: '4'
77
+ version: '5'
220
78
  required_rubygems_version: !ruby/object:Gem::Requirement
221
79
  requirements:
222
80
  - - ">="
223
81
  - !ruby/object:Gem::Version
224
82
  version: '0'
225
83
  requirements: []
226
- rubygems_version: 3.0.3.1
227
- signing_key:
84
+ rubygems_version: 3.6.2
228
85
  specification_version: 4
229
86
  summary: Lightweight filewatcher.
230
87
  test_files: []