file-digests 0.0.38 → 0.0.39
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/lib/file-digests.rb +39 -19
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac950f13dc01dc9df2f54f3ef0f5141b778b96e4bb3619859e88617561995d38
|
4
|
+
data.tar.gz: 90a54bcfdd87c28f831fe7675f8285131b01aabc1dca87c3446089ed20530bf5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eac04858364ea73a555d2c1b272acca9cb78901b68b2b3dfef659f27f7b83d14c9c37a7d66f892117a7ee13aee321f2873f4f11e4cae652d09d02c3510144086
|
7
|
+
data.tar.gz: 385350fae26d40df014c9409d7fafa50fa6e10c2951c44c740e0e41ad547fe4d7f548245f97736850c796a01a0517d591a1431dfd9b6e7511d2d854d1e60979c
|
data/lib/file-digests.rb
CHANGED
@@ -140,9 +140,11 @@ class FileDigests
|
|
140
140
|
|
141
141
|
def initialize_paths files_path, digest_database_path
|
142
142
|
@files_path = cleanup_path(files_path || ".")
|
143
|
-
raise "Files path must be a readable directory" unless (File.directory?(@files_path) && File.readable?(@files_path))
|
143
|
+
raise "ERROR: Files path must be a readable directory" unless (File.directory?(@files_path) && File.readable?(@files_path))
|
144
144
|
@files_path = realpath_with_disk @files_path
|
145
145
|
|
146
|
+
@error_log_path = @files_path + "file-digests errors #{Time.now.strftime("%Y-%m-%d %H-%M-%S")}.txt"
|
147
|
+
|
146
148
|
@digest_database_path = digest_database_path ? cleanup_path(digest_database_path) : @files_path
|
147
149
|
@digest_database_path += ".file-digests.sqlite" if File.directory?(@digest_database_path)
|
148
150
|
ensure_dir_exist @digest_database_path.dirname
|
@@ -370,7 +372,7 @@ class FileDigests
|
|
370
372
|
|
371
373
|
rescue => exception
|
372
374
|
@counters[:exceptions] += 1
|
373
|
-
|
375
|
+
report_file_exception exception, filename
|
374
376
|
end
|
375
377
|
|
376
378
|
def process_file_indeed filename, mtime, digest
|
@@ -396,7 +398,7 @@ class FileDigests
|
|
396
398
|
else
|
397
399
|
if found["mtime"] == mtime && !@options[:accept_fate] # Digest is different and mtime is the same
|
398
400
|
@counters[:likely_damaged] += 1
|
399
|
-
|
401
|
+
error_text "LIKELY DAMAGED: #{filename}"
|
400
402
|
else
|
401
403
|
@counters[:updated] += 1
|
402
404
|
puts "UPDATED#{" (FATE ACCEPTED)" if found["mtime"] == mtime && @options[:accept_fate]}: #{filename}" unless @options[:quiet]
|
@@ -532,7 +534,7 @@ class FileDigests
|
|
532
534
|
def check_if_database_is_at_certain_version target_version
|
533
535
|
current_version = get_metadata("database_version")
|
534
536
|
if current_version != target_version
|
535
|
-
STDERR.puts "This version of file-digests (#{FileDigests::VERSION || "unknown"}) is only compartible with the database version #{target_version}. Current database version is #{current_version}. To use this database, please install appropriate version if file-digest."
|
537
|
+
STDERR.puts "ERROR: This version of file-digests (#{FileDigests::VERSION || "unknown"}) is only compartible with the database version #{target_version}. Current database version is #{current_version}. To use this database, please install appropriate version if file-digest."
|
536
538
|
raise "Incompatible database version"
|
537
539
|
end
|
538
540
|
end
|
@@ -581,17 +583,21 @@ class FileDigests
|
|
581
583
|
def walk_files(path, &block)
|
582
584
|
Dir.each_child(path, encoding: "UTF-8") do |item|
|
583
585
|
item = "#{path}#{File::SEPARATOR}#{item}"
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
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)
|
591
|
+
walk_files(item, &block)
|
592
|
+
else
|
593
|
+
error_text "ERROR: Directory is not readable: #{item}"
|
594
|
+
@counters[:exceptions] += 1
|
595
|
+
end
|
588
596
|
else
|
589
597
|
yield item
|
590
598
|
end
|
591
|
-
else
|
592
|
-
STDERR.puts "ERROR: Directory entry is not readable: #{item}"
|
593
|
-
@counters[:exceptions] += 1
|
594
599
|
end
|
600
|
+
|
595
601
|
end
|
596
602
|
end
|
597
603
|
|
@@ -647,17 +653,31 @@ class FileDigests
|
|
647
653
|
puts "Elapsed time: #{elapsed.to_i / 3600}h #{(elapsed.to_i % 3600) / 60}m #{"%.3f" % (elapsed % 60)}s" unless @options[:quiet]
|
648
654
|
end
|
649
655
|
|
650
|
-
def
|
651
|
-
STDERR
|
656
|
+
def report_file_exception exception, filename
|
657
|
+
write_file_exception STDERR, exception, filename
|
658
|
+
File.open(@error_log_path, "a") do |f|
|
659
|
+
write_file_exception f, exception, filename
|
660
|
+
end
|
661
|
+
end
|
662
|
+
|
663
|
+
def write_file_exception dest, exception, filename
|
664
|
+
dest.print "ERROR: #{exception.message}, processing file: "
|
652
665
|
begin
|
653
|
-
|
666
|
+
dest.print filename.encode("utf-8", universal_newline: true)
|
654
667
|
rescue
|
655
|
-
|
656
|
-
|
668
|
+
dest.print "(Unable to encode file name to utf-8) "
|
669
|
+
dest.print filename
|
670
|
+
end
|
671
|
+
dest.print "\n"
|
672
|
+
dest.flush
|
673
|
+
exception.backtrace.each { |line| dest.puts " " + line }
|
674
|
+
end
|
675
|
+
|
676
|
+
def error_text text
|
677
|
+
STDERR.puts text
|
678
|
+
File.open(@error_log_path, "a") do |f|
|
679
|
+
f.puts text
|
657
680
|
end
|
658
|
-
STDERR.print "\n"
|
659
|
-
STDERR.flush
|
660
|
-
exception.backtrace.each { |line| STDERR.puts " " + line }
|
661
681
|
end
|
662
682
|
|
663
683
|
def print_counters
|
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.
|
4
|
+
version: 0.0.39
|
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-
|
11
|
+
date: 2020-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: openssl
|