dcm 0.1.11 → 0.1.13

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: a90b3b251972c3891e3441e318601df2fb9877665f64b847f3146f6bfa6746a9
4
- data.tar.gz: c99e7b77db8ef997685b980ecd3c76ebada743b9664da272fd9b5da40a03362f
3
+ metadata.gz: ec6cdc0993e9acfaa13e9e4393161d07dc545f70393b31ad2f9db651f8faa8ed
4
+ data.tar.gz: 25246c2a17d7401e08b804cdd1c3819e108a6b7deba0660de2c4e37bab7d5eb9
5
5
  SHA512:
6
- metadata.gz: b71bb574f7c2a6978a8a70b6baedaecf851b257aab13eb66badc6d95cc1915e1c11603d0c57eba0c600efc66963578b3bef6b7da0154f0bf21838391e67554c8
7
- data.tar.gz: 05a2ad45f36def6ae8f88035cc6dd750d294f5cd9be627dea5e89022625732374f35310069377f0d3ffc36ee76d0cc4da9fb29eb3965e666e864586c91d0dfa2
6
+ metadata.gz: b0dd2e2276ddf19e525db7605ac735846c90bf09b20dcea61be194081f3d91a8847a8e61bdaf1bc22fdd47f6866479283f7f94eb1bb23f2b9d453f3163c4cbc9
7
+ data.tar.gz: 4761b9727aec332e5547a861c77e4535d8e7123d30675fb8317cddb3f9e644258001eb49f8351c79e1c01c2cd0c2fcf5fb8bc26b832c18d9997a8238bc8aede0
data/lib/cli.rb CHANGED
@@ -7,6 +7,7 @@ require "filesize"
7
7
  require "json"
8
8
 
9
9
  require_relative "file_reader"
10
+ require_relative "file_cache"
10
11
  require_relative "codinginfo"
11
12
  require_relative "tempfile_handler"
12
13
  require_relative "diff_viewer"
@@ -272,7 +273,10 @@ module Dcm
272
273
  if file.nil? || file == "-"
273
274
  file = TempfileHandler.create(STDIN.read, filename: ["stdin", ".dcm"])
274
275
  end
275
- Ecu::LabelList.from_dcm(FileReader.read(file))
276
+
277
+ FileCache.get(file) do
278
+ Ecu::LabelList.from_dcm(FileReader.read(file))
279
+ end
276
280
  rescue Ecu::DcmParserError => e
277
281
  STDERR.puts e.message
278
282
  STDERR.puts e.context
data/lib/file_cache.rb ADDED
@@ -0,0 +1,49 @@
1
+ require "tmpdir"
2
+ require "digest"
3
+
4
+ class FileCache
5
+ MAXDURATION = 60 * 10
6
+
7
+ def self.get(filepath, &blk)
8
+ new(filepath).cache!(&blk)
9
+ end
10
+
11
+ attr_reader :filepath
12
+ def initialize(filepath)
13
+ @filepath = filepath
14
+ end
15
+
16
+ def cache!
17
+ return read_cache if cached?
18
+
19
+ yield.tap { write_cache(_1) }
20
+ end
21
+
22
+ private
23
+
24
+ def cached?
25
+ exist? && up_to_date?
26
+ end
27
+
28
+ def exist? = File.exist?(cachefilepath)
29
+
30
+ def up_to_date?
31
+ return false unless exist?
32
+
33
+ (Time.now - File.mtime(cachefilepath)) < MAXDURATION
34
+ end
35
+
36
+ def read_cache
37
+ Marshal.load(File.read(cachefilepath))
38
+ end
39
+
40
+ def write_cache(obj)
41
+ File.write(cachefilepath, Marshal.dump(obj))
42
+ end
43
+
44
+ def cachefilepath
45
+ File.expand_path(filepath)
46
+ .then { Digest::MD5.hexdigest(_1) }
47
+ .then { File.join(Dir.tmpdir, "dcm-#{_1}.dump") }
48
+ end
49
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dcm
2
- VERSION = "0.1.11"
2
+ VERSION = "0.1.13"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Mueller
@@ -177,6 +177,7 @@ files:
177
177
  - lib/codinginfo.rb
178
178
  - lib/core_ext.rb
179
179
  - lib/diff_viewer.rb
180
+ - lib/file_cache.rb
180
181
  - lib/file_reader.rb
181
182
  - lib/fuzzy_selector.rb
182
183
  - lib/list_colorizer.rb