code_manifest 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce96e05345e51d540aacc972db444154ae247a78ff6bf49e5b2b7ffa1c3f387c
4
- data.tar.gz: 6a11aa482a2aacd63e2013bdf1a17eb7a329c9003727daf90ed4b730f847fafc
3
+ metadata.gz: 954a51776f486956c9c233fa8c3b1eeea14dff085eea71f2f45f0c1fdb46a6f8
4
+ data.tar.gz: eb4ade750b31af1cc7e7a8673968bfb3ee5ab43c773593d76c14ad2478de2279
5
5
  SHA512:
6
- metadata.gz: ab83455ee76f574238dc5de1f3c1ca5263302719c915557021ef8aa4291e938ee81e7672b1f28c9800c167ef5ae6ad86f441d063ef22d7a1e18a33d4eba75c35
7
- data.tar.gz: eb00e5a8bb44dcf64f636ba3a4509e410ab5fee7f83a6afb7433aab0abf96b7bf8674dbc0c0542229532a86fd757dc9cd484a6614469bf45f461ae2068d9dcdc
6
+ metadata.gz: da6063df72327a5cbdff35fa5c06078390475bc4af266c63d1c5432fcb92c56c4fcd5f94b94e4b125e04eb755c9c4008aa93209df2d6456beb40eb04f9295b5f
7
+ data.tar.gz: dfdf732aac67d9eeb23e05f1b12464874673e13815117a9f1b52e083779bb98e4522cea0a0aa2f375f473244ddcc083642442b820a9af99aa8e8b1a3bdaccc50
@@ -13,15 +13,13 @@ module CodeManifest
13
13
  @rules ||= Array(patterns).map do |pattern|
14
14
  Rule.new(pattern)
15
15
  end
16
+ @cache = {}
16
17
  end
17
18
 
18
19
  def files
19
20
  @files ||= begin
20
- inclusion_files = Dir.glob(inclusion_rules.map(&:glob), GLOB_OPTIONS, base: CodeManifest.root)
21
- inclusion_files.delete_if do |file|
22
- exclusion_rules.any? { |rule| rule.match?(file) }
23
- end
24
- files_with_relative_path(inclusion_files).sort!.freeze
21
+ matched_files = matches(Dir.glob(inclusion_rules.map(&:glob), GLOB_OPTIONS, base: CodeManifest.root))
22
+ files_with_relative_path(matched_files).freeze
25
23
  end
26
24
  end
27
25
 
@@ -33,18 +31,22 @@ module CodeManifest
33
31
  end
34
32
 
35
33
  def matches(paths)
36
- result_paths = Array(paths).select do |path|
37
- inclusion_rules.any? { |rule| rule.match?(path) }
38
- end
39
- result_paths.reject! do |path|
40
- exclusion_rules.any? { |rule| rule.match?(path) }
41
- end
42
-
43
- result_paths.sort!
34
+ Array(paths).select do |path|
35
+ cached_match =
36
+ if @cache.key?(path)
37
+ @cache.fetch(path)
38
+ else
39
+ @cache[path] = [
40
+ inclusion_rules.any? { |rule| rule.match?(path) },
41
+ exclusion_rules.any? { |rule| rule.match?(path) }
42
+ ]
43
+ end
44
+ cached_match.first && !cached_match.last
45
+ end.sort!
44
46
  end
45
47
 
46
48
  def matches_all?(paths)
47
- matches(paths) == paths
49
+ matches(paths).size == paths.size
48
50
  end
49
51
 
50
52
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodeManifest
4
- VERSION = '1.7.0'
4
+ VERSION = '1.8.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_manifest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-17 00:00:00.000000000 Z
11
+ date: 2024-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: psych
@@ -28,16 +28,30 @@ dependencies:
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: debug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '3.0'
54
+ version: '0'
41
55
  description: A code manifest
42
56
  email:
43
57
  - dev@gusto.com
@@ -56,7 +70,7 @@ metadata:
56
70
  homepage_uri: https://github.com/rubyatscale/code_manifest
57
71
  source_code_uri: https://github.com/rubyatscale/code_manifest
58
72
  changelog_uri: https://github.com/rubyatscale/code_manifest/releases
59
- post_install_message:
73
+ post_install_message:
60
74
  rdoc_options: []
61
75
  require_paths:
62
76
  - lib
@@ -71,8 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
85
  - !ruby/object:Gem::Version
72
86
  version: '0'
73
87
  requirements: []
74
- rubygems_version: 3.5.9
75
- signing_key:
88
+ rubygems_version: 3.5.16
89
+ signing_key:
76
90
  specification_version: 4
77
91
  summary: A code manifest
78
92
  test_files: []