file-digests 0.0.39 → 0.0.40

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/file-digests.rb +38 -21
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac950f13dc01dc9df2f54f3ef0f5141b778b96e4bb3619859e88617561995d38
4
- data.tar.gz: 90a54bcfdd87c28f831fe7675f8285131b01aabc1dca87c3446089ed20530bf5
3
+ metadata.gz: a9d040599aee9aeb62234557b2a92edec36265e4439965e4c9d00a2c9afa117a
4
+ data.tar.gz: 992fe8a843afe761537a3c48b1ecde27ccdf8101be58dd4b456572c59232141b
5
5
  SHA512:
6
- metadata.gz: eac04858364ea73a555d2c1b272acca9cb78901b68b2b3dfef659f27f7b83d14c9c37a7d66f892117a7ee13aee321f2873f4f11e4cae652d09d02c3510144086
7
- data.tar.gz: 385350fae26d40df014c9409d7fafa50fa6e10c2951c44c740e0e41ad547fe4d7f548245f97736850c796a01a0517d591a1431dfd9b6e7511d2d854d1e60979c
6
+ metadata.gz: 1e15aa584690f8062a51cbb4785c9716e610258fba77859cb2b50642154701ffa1651312be1f6455921ee435ed7df5ed00bcc36f12def4009ac7edcc4aebb93e
7
+ data.tar.gz: 5c94ae4165677af0be7b790a7a92ffc9af7751f0dd2661bf238d06b02569ef4ec746908721c7d16781d11a431048759e1490f9e180ea9c2e647f5e585a3ebbe0
@@ -139,17 +139,29 @@ class FileDigests
139
139
  end
140
140
 
141
141
  def initialize_paths files_path, digest_database_path
142
+ @start_time_filename_string = Time.now.strftime("%Y-%m-%d %H-%M-%S")
142
143
  @files_path = cleanup_path(files_path || ".")
143
144
  raise "ERROR: Files path must be a readable directory" unless (File.directory?(@files_path) && File.readable?(@files_path))
144
145
  @files_path = realpath_with_disk @files_path
145
146
 
146
- @error_log_path = @files_path + "file-digests errors #{Time.now.strftime("%Y-%m-%d %H-%M-%S")}.txt"
147
+ @error_log_path = @files_path + "file-digests errors #{@start_time_filename_string}.txt"
148
+ @missing_files_path = @files_path + "file-digests missing files #{@start_time_filename_string}.txt"
147
149
 
148
150
  @digest_database_path = digest_database_path ? cleanup_path(digest_database_path) : @files_path
149
151
  @digest_database_path += ".file-digests.sqlite" if File.directory?(@digest_database_path)
150
152
  ensure_dir_exist @digest_database_path.dirname
151
153
  @digest_database_path = realdirpath_with_disk @digest_database_path
152
- @digest_database_files = ["#{@digest_database_path}", "#{@digest_database_path}-wal", "#{@digest_database_path}-shm"]
154
+
155
+ @digest_database_files = [
156
+ "#{@digest_database_path}",
157
+ "#{@digest_database_path}-wal",
158
+ "#{@digest_database_path}-shm"
159
+ ]
160
+
161
+ @skip_files = @digest_database_files + [
162
+ @error_log_path.to_s,
163
+ @missing_files_path.to_s
164
+ ]
153
165
 
154
166
  if @options[:verbose]
155
167
  puts "Target directory: #{@files_path}"
@@ -288,7 +300,7 @@ class FileDigests
288
300
  if any_exceptions?
289
301
  STDERR.puts "Due to previously occurred errors, missing files will not removed from the database."
290
302
  else
291
- print_missing_files
303
+ report_missing_files
292
304
  if !@options[:test_only] && (@options[:auto] || confirm("Remove missing files from the database"))
293
305
  nested_transaction do
294
306
  puts "Removing missing files..." if @options[:verbose]
@@ -356,8 +368,8 @@ class FileDigests
356
368
 
357
369
  raise "File is not readable" unless stat.readable?
358
370
 
359
- if @digest_database_files.include?(filename)
360
- puts "SKIPPING DATABASE FILE: #{filename}" if @options[:verbose]
371
+ if @skip_files.include?(filename)
372
+ puts "SKIPPING FILE: #{filename}" if @options[:verbose]
361
373
  return
362
374
  end
363
375
 
@@ -369,10 +381,6 @@ class FileDigests
369
381
  new_digests_insert(normalized_filename, new_digest) if new_digest
370
382
  process_file_indeed normalized_filename, mtime_string, digest
371
383
  end
372
-
373
- rescue => exception
374
- @counters[:exceptions] += 1
375
- report_file_exception exception, filename
376
384
  end
377
385
 
378
386
  def process_file_indeed filename, mtime, digest
@@ -428,10 +436,19 @@ class FileDigests
428
436
  @counters[:renamed] = @db.changes
429
437
  end
430
438
 
431
- def print_missing_files
439
+ def report_missing_files
432
440
  puts "\nMISSING FILES:"
441
+ write_missing_files STDOUT
442
+ if missing_files_count > 256
443
+ File.open(@missing_files_path, "a") do |f|
444
+ write_missing_files f
445
+ end
446
+ end
447
+ end
448
+
449
+ def write_missing_files dest
433
450
  missing_files_select_all_filenames.each do |record|
434
- puts record["filename"]
451
+ dest.puts record["filename"]
435
452
  end
436
453
  end
437
454
 
@@ -583,21 +600,21 @@ class FileDigests
583
600
  def walk_files(path, &block)
584
601
  Dir.each_child(path, encoding: "UTF-8") do |item|
585
602
  item = "#{path}#{File::SEPARATOR}#{item}"
586
- item_perhaps_nt_path = perhaps_nt_path item
587
-
588
- unless File.symlink? item_perhaps_nt_path
589
- if File.directory?(item_perhaps_nt_path)
590
- if File.readable?(item_perhaps_nt_path)
603
+ begin
604
+ item_perhaps_nt_path = perhaps_nt_path item
605
+
606
+ unless File.symlink? item_perhaps_nt_path
607
+ if File.directory?(item_perhaps_nt_path)
608
+ raise "Directory is not readable" unless File.readable?(item_perhaps_nt_path)
591
609
  walk_files(item, &block)
592
610
  else
593
- error_text "ERROR: Directory is not readable: #{item}"
594
- @counters[:exceptions] += 1
611
+ yield item
595
612
  end
596
- else
597
- yield item
598
613
  end
614
+ rescue => exception
615
+ @counters[:exceptions] += 1
616
+ report_file_exception exception, item
599
617
  end
600
-
601
618
  end
602
619
  end
603
620
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file-digests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.39
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanislav Senotrusov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-19 00:00:00.000000000 Z
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl