file-digests 0.0.43 → 0.0.45

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/file-digests +4 -0
  3. data/lib/file-digests.rb +19 -18
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e74595cb920bd6b52f8f0a0efab118afae509dc5406389d5203518ce801f2811
4
- data.tar.gz: ad4429b2d998dc82c441cb5ebd9b9f3640158f20abe0839ead0f0de57037854b
3
+ metadata.gz: 724ceeb18b2bd197f9ea5b01b19ffee3b710c8aa044b169290240522d877fb98
4
+ data.tar.gz: 53b693c580c5426a8925bc3dfef43b8b2ff5ca92635f8e132020d3615fb7fdd2
5
5
  SHA512:
6
- metadata.gz: 8c78ceabcbba358c5be5222681ef45d25acef175f4840022997d652c1740ad1c66a461b8ff2e618bb48a80f97783f7afa57d4281c41d7251c3aa94b4641b5079
7
- data.tar.gz: b83b60f4d66e5a57ed7f5f44a6f997c6c47e5df38686a63459fcf7943dd95cda8f9e7cb41a717e071ec5cfef14459b201afc9f5e18f990364f2a7654566af351
6
+ metadata.gz: bfbe437ff9443012f236a58f4ea1a5af6782452437e764d8848a86422dce763c01b18c463788003b62c2249117aef02cd2759bb20be58eacd93bc0ab06e619d7
7
+ data.tar.gz: b98e15d44a163fc2732ef581006655ea3dc1339668bf908c409dd9d5ca3c60a8558b1ddd9e5032c813781ac55e49bf4073b4a5301c5376d2d70c1ddc3ca874e6
data/bin/file-digests CHANGED
@@ -16,4 +16,8 @@
16
16
 
17
17
  require 'file-digests'
18
18
 
19
+ $FILE_DIGESTS_EXIT_STATUS=0
20
+
19
21
  FileDigests.run_cli_utility
22
+
23
+ exit $FILE_DIGESTS_EXIT_STATUS
data/lib/file-digests.rb CHANGED
@@ -184,9 +184,11 @@ class FileDigests
184
184
  STDERR.puts "A list of errors is also saved in a file: #{@error_log_path}"
185
185
  end
186
186
 
187
- set_metadata(@options[:test_only] ? "latest_test_only_check_time" : "latest_complete_check_time", time_to_database(Time.now))
188
-
189
187
  print_counters
188
+
189
+ if any_missing_files? || any_likely_damaged? || any_exceptions?
190
+ $FILE_DIGESTS_EXIT_STATUS=1
191
+ end
190
192
  end
191
193
 
192
194
  puts "Performing database maintenance..." if @options[:verbose]
@@ -245,10 +247,8 @@ class FileDigests
245
247
  @missing_files_path
246
248
  ]
247
249
 
248
- if @options[:verbose]
249
- puts "Target directory: #{@files_path}"
250
- puts "Database location: #{@digest_database_path}"
251
- end
250
+ puts "Checking file digests in: #{@files_path}" unless @options[:quiet]
251
+ puts "Database location: #{@digest_database_path}" if @options[:verbose]
252
252
  end
253
253
 
254
254
  def initialize_database
@@ -291,22 +291,20 @@ class FileDigests
291
291
  id INTEGER NOT NULL PRIMARY KEY,
292
292
  filename TEXT NOT NULL,
293
293
  mtime TEXT,
294
- digest TEXT NOT NULL,
295
- digest_check_time TEXT NOT NULL)"
294
+ digest TEXT NOT NULL)"
296
295
  execute "CREATE UNIQUE INDEX digests_filename ON digests(filename)"
297
296
  execute "CREATE INDEX digests_digest ON digests(digest)"
298
297
  set_metadata("digests_table_created_by_gem_version", FileDigests::VERSION) if FileDigests::VERSION
299
298
  end
300
299
 
301
- prepare_method :digests_insert, "INSERT INTO digests (filename, mtime, digest, digest_check_time) VALUES (?, ?, ?, datetime('now'))"
300
+ prepare_method :digests_insert, "INSERT INTO digests (filename, mtime, digest) VALUES (?, ?, ?)"
302
301
  prepare_method :digests_find_by_filename_query, "SELECT id, mtime, digest FROM digests WHERE filename = ?"
303
- prepare_method :digests_touch_check_time, "UPDATE digests SET digest_check_time = datetime('now') WHERE id = ?"
304
- prepare_method :digests_update_mtime_and_digest, "UPDATE digests SET mtime = ?, digest = ?, digest_check_time = datetime('now') WHERE id = ?"
305
- prepare_method :digests_update_mtime, "UPDATE digests SET mtime = ?, digest_check_time = datetime('now') WHERE id = ?"
302
+ prepare_method :digests_update_mtime_and_digest, "UPDATE digests SET mtime = ?, digest = ? WHERE id = ?"
303
+ prepare_method :digests_update_mtime, "UPDATE digests SET mtime = ? WHERE id = ?"
306
304
  prepare_method :digests_select_duplicates, "SELECT digest, filename FROM digests WHERE digest IN (SELECT digest FROM digests GROUP BY digest HAVING count(*) > 1) ORDER BY digest, filename;"
307
305
 
308
306
  unless get_metadata("database_version")
309
- set_metadata "database_version", "3"
307
+ set_metadata "database_version", "4"
310
308
  end
311
309
 
312
310
  # Convert database from 1st to 2nd version
@@ -326,7 +324,12 @@ class FileDigests
326
324
  set_metadata "database_version", "3"
327
325
  end
328
326
 
329
- check_if_database_is_at_certain_version "3"
327
+ if get_metadata("database_version") == "3"
328
+ execute "ALTER TABLE digests DROP COLUMN digest_check_time"
329
+ set_metadata "database_version", "4"
330
+ end
331
+
332
+ check_if_database_is_at_certain_version "4"
330
333
 
331
334
  create_temporary_tables
332
335
  end
@@ -362,7 +365,7 @@ class FileDigests
362
365
  digest TEXT NOT NULL)"
363
366
 
364
367
  prepare_method :new_digests_insert, "INSERT INTO new_digests (filename, digest) VALUES (?, ?)"
365
- prepare_method :digests_update_digests_to_new_digests, "INSERT INTO digests (filename, digest, digest_check_time) SELECT filename, digest, false FROM new_digests WHERE true ON CONFLICT (filename) DO UPDATE SET digest=excluded.digest"
368
+ prepare_method :digests_update_digests_to_new_digests, "INSERT INTO digests (filename, digest) SELECT filename, digest FROM new_digests WHERE true ON CONFLICT (filename) DO UPDATE SET digest=excluded.digest"
366
369
  end
367
370
 
368
371
  # Files
@@ -480,9 +483,7 @@ class FileDigests
480
483
  @counters[:good] += 1
481
484
  puts "GOOD: #{filename}" if @options[:verbose]
482
485
  unless @options[:test_only]
483
- if found["mtime"] == mtime
484
- digests_touch_check_time found["id"]
485
- else
486
+ if found["mtime"] != mtime
486
487
  digests_update_mtime mtime, found["id"]
487
488
  end
488
489
  end
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.43
4
+ version: 0.0.45
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanislav Senotrusov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-20 00:00:00.000000000 Z
11
+ date: 2022-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  requirements: []
69
- rubygems_version: 3.3.7
69
+ rubygems_version: 3.3.26
70
70
  signing_key:
71
71
  specification_version: 4
72
72
  summary: file-digests