fast_ignore 0.6.0 → 0.7.0

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: 85adcabd5164bc3c1cf44af50ff5565b8ce00d6c69f8145eab0634fbaef551fb
4
- data.tar.gz: de0192432d8423e5fee408aa7d3a052bc008d96b5cacadf7d2d6b66da3527030
3
+ metadata.gz: dc58ddc21668f583d8d2866415dd2654e20b6656c0efd959748be97c69e11018
4
+ data.tar.gz: 75b23ef5a9143a398ad68350c0a1700a2566e4cebd4311099d991e0b202a4af9
5
5
  SHA512:
6
- metadata.gz: 8507d8f07c51e0cb2b00a0ea619683bc41ca85b0a89d7e4787f5b0aa9157d255ec261a4ffab130982c89f1c85b4a0dd5f7030bb18de20186362eaf894b816b65
7
- data.tar.gz: 661628a1913544cc67d1833ddb84218db6b85de165ba11fb39dd1f62c014638b9fd72d8f3efe0bc8ce2f1379acf43a63a2bedf016e9ff5927d400e8c4932a57c
6
+ metadata.gz: 963cb997dcdb9f97dd9afdf7cea6eef408a0c225279bb80932e26cb3f495517e28bdd883cf1d45b66806efd39223775d719bd887a39fd6617575535d7ee528de
7
+ data.tar.gz: cef7f0d29b7715793d53519df4000fbf1dca04580e1df49ec8a996e96c092f110ac14d9729161e7ad5ba6a2dcc60108a642b30a9888e2271e1cbb8e011f2ac91
data/.rubocop.yml CHANGED
@@ -14,6 +14,7 @@ AllCops:
14
14
  - vendor/**/*
15
15
  DisplayCopNames: true
16
16
  DisplayStyleGuide: true
17
+ TargetRubyVersion: 2.4
17
18
 
18
19
  # all of our layout customisations are because we prefer indentation to be
19
20
  # always consistently 2 spaces, for blocks, scopes, multiline expressions, etc
@@ -80,6 +81,9 @@ Layout/FirstArrayElementIndentation:
80
81
  Layout/FirstHashElementIndentation:
81
82
  EnforcedStyle: consistent
82
83
 
84
+ Layout/LineLength:
85
+ Max: 120
86
+
83
87
  # to match our preference for consistent indentation
84
88
  # and hanging assignment looks lost
85
89
  Layout/MultilineAssignmentLayout:
@@ -114,9 +118,6 @@ Metrics/BlockLength:
114
118
  - context
115
119
  - shared_examples
116
120
 
117
- Metrics/LineLength:
118
- Max: 120
119
-
120
121
  Metrics/CyclomaticComplexity:
121
122
  Enabled: false
122
123
 
@@ -200,3 +201,12 @@ Style/SymbolArray:
200
201
 
201
202
  Style/WordArray:
202
203
  Enabled: false
204
+
205
+ Style/HashEachMethods:
206
+ Enabled: true
207
+
208
+ Style/HashTransformKeys:
209
+ Enabled: true
210
+
211
+ Style/HashTransformValues:
212
+ Enabled: true
data/.travis.yml CHANGED
@@ -3,9 +3,7 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.3
7
6
  - 2.4
8
7
  - 2.5
9
8
  - 2.6
10
9
  - 2.7
11
- before_install: gem install bundler -v 1.17.3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # v0.7.0
2
+ - drop support for ruby 2.3. My plan is to only support supported ruby versions
3
+ - add coverage to the pipeline. removed some methods, added some tests, and now we have 100% test coverage
4
+ - deprecate using `gitignore: '/path/to/gitignore'`. please use `gitignore: false, ignore_files: '/path/to/gitignore'` instead.
5
+
1
6
  # v0.6.0
2
7
  - nicer argv handling
3
8
  - add `argv_rules:` option, which resolves paths and considers everything that doesn't start with a `*` to start with a `/`
data/Gemfile CHANGED
@@ -5,4 +5,5 @@ source 'https://rubygems.org'
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  # Specify your gem's dependencies in fast_ignore.gemspec
8
+
8
9
  gemspec
data/README.md CHANGED
@@ -43,18 +43,21 @@ By default, FastIgnore will return full paths. To return paths relative to the c
43
43
  FastIgnore.new(relative: true).to_a
44
44
  ```
45
45
 
46
- You can specify other gitignore-style files to ignore as well. These rules will be appended after the gitignore file in order (order matters for negations)
46
+ You can specify other gitignore-style files to ignore as well. Missing files will raise an `Errno::ENOENT` error.
47
+
47
48
  ```ruby
48
49
  FastIgnore.new(ignore_files: '/absolute/path/to/my/ignore/file').to_a
49
50
  FastIgnore.new(ignore_files: ['/absolute/path/to/my/ignore/file', '/and/another']).to_a
50
51
  ```
51
- You can also supply an array of rule strings. These rules will be appended after the gitignore and any other files in order (order matters for negations)
52
+
53
+ You can also supply an array of rule strings.
54
+
52
55
  ```ruby
53
56
  FastIgnore.new(ignore_rules: '.DS_Store').to_a
54
57
  FastIgnore.new(ignore_rules: ['.git', '.gitkeep']).to_a
55
58
  ```
56
59
 
57
- To use only another ignore file or an array of rules, and not try to load a gitignore file:
60
+ To use only another ignore file or an array of rules, and not even try to load a gitignore file:
58
61
  ```ruby
59
62
  FastIgnore.new(ignore_files: '/absolute/path/to/my/ignore/file', gitignore: false)
60
63
  FastIgnore.new(ignore_rules: %w{my*rule /and/another !rule}, gitignore: false)
@@ -62,11 +65,11 @@ FastIgnore.new(ignore_rules: %w{my*rule /and/another !rule}, gitignore: false)
62
65
 
63
66
  By default, FastIgnore will look in the directory the script is run in (`PWD`) for a gitignore file. If it's somewhere else:
64
67
  ```ruby
65
- FastIgnore.new(gitignore: '/absolute/path/to/.gitignore').to_a
68
+ FastIgnore.new(ignore_file: '/absolute/path/to/.gitignore', gitignore: false).to_a
66
69
  ```
67
70
  Note that the location of the .gitignore file will affect rules beginning with `/` or ending in `/**`
68
71
 
69
- To raise if the gitignore file is not found use:
72
+ To raise an `Errno::ENOENT` error if the .gitignore file is not found use:
70
73
  ```ruby
71
74
  FastIgnore.new(gitignore: true)
72
75
  ```
@@ -87,7 +90,7 @@ Building on the gitignore format, FastIgnore also accepts a list of allowed or i
87
90
  # a line like this means any files named foo will be included
88
91
  # as well as any files within directories named foo
89
92
  foo
90
- # a line beginning with a slash will be anything in a directory that is a child of the PWD
93
+ # a line beginning with a slash will be anything in a directory that is a child of the $PWD
91
94
  /foo
92
95
  # a line ending in a slash will will include any files in any directories named foo
93
96
  # but not any files named foo
@@ -127,7 +130,7 @@ FastIgnore.new(include_files: StringIO.new([File.read('/my/path'), File.read('/a
127
130
  To use the additional ARGV handling rules mentioned above for files
128
131
 
129
132
  ```ruby
130
- FastIgnore.new(include_rules: ["my/rule", File.read('/my/path')])
133
+ FastIgnore.new(argv_rules: ["my/rule", File.read('/my/path')])
131
134
  ```
132
135
 
133
136
  ## Known issues
data/fast_ignore.gemspec CHANGED
@@ -14,6 +14,8 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/robotdana/fast_ignore'
15
15
  spec.license = 'MIT'
16
16
 
17
+ spec.required_ruby_version = '~> 2.4'
18
+
17
19
  if spec.respond_to?(:metadata)
18
20
  spec.metadata['homepage_uri'] = spec.homepage
19
21
  spec.metadata['source_code_uri'] = 'https://github.com/robotdana/fast_ignore'
@@ -28,9 +30,10 @@ Gem::Specification.new do |spec|
28
30
  spec.require_paths = ['lib']
29
31
 
30
32
  spec.add_development_dependency 'bundler', '>= 1.17'
31
- spec.add_development_dependency 'pry', '~> 0'
33
+ spec.add_development_dependency 'pry', '> 0'
32
34
  spec.add_development_dependency 'rake', '~> 10.0'
33
35
  spec.add_development_dependency 'rspec', '~> 3.0'
34
36
  spec.add_development_dependency 'rubocop', '>= 0.74.0'
35
37
  spec.add_development_dependency 'rubocop-rspec', '~> 1'
38
+ spec.add_development_dependency 'simplecov', '~> 0.18.5'
36
39
  end
@@ -17,12 +17,10 @@ class FastIgnore
17
17
  @negation = negation
18
18
  end
19
19
 
20
+ # :nocov:
20
21
  def inspect
21
22
  "#<Rule #{'!' if negation?}#{rule}#{'/' if dir_only?}>"
22
23
  end
23
-
24
- def match?(path)
25
- ::File.fnmatch?(@rule, path, 14)
26
- end
24
+ # :nocov:
27
25
  end
28
26
  end
@@ -5,15 +5,12 @@ require_relative 'backports'
5
5
 
6
6
  class FastIgnore
7
7
  class RuleParser
8
+ # :nocov:
8
9
  if ::FastIgnore::Backports.ruby_version_less_than?(2, 5)
9
10
  require_relative 'backports/delete_prefix_suffix'
10
11
  using ::FastIgnore::Backports::DeletePrefixSuffix
11
-
12
- if ::FastIgnore::Backports.ruby_version_less_than?(2, 4)
13
- require_relative 'backports/match'
14
- using ::FastIgnore::Backports::Match
15
- end
16
12
  end
13
+ # :nocov:
17
14
 
18
15
  # rule or nil
19
16
  class << self
@@ -58,6 +58,8 @@ class FastIgnore
58
58
  when false
59
59
  nil
60
60
  else
61
+ warn 'Deprecation warning! supplying gitignore file path directly is deprecated. '\
62
+ 'Please use gitignore: false and add your path to the ignore_files array'
61
63
  from_file(gitignore, project_root: root)
62
64
  end
63
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class FastIgnore
4
- VERSION = '0.6.0'
4
+ VERSION = '0.7.0'
5
5
  end
data/lib/fast_ignore.rb CHANGED
@@ -6,6 +6,7 @@ require_relative './fast_ignore/backports'
6
6
  class FastIgnore
7
7
  include ::Enumerable
8
8
 
9
+ # :nocov:
9
10
  if ::FastIgnore::Backports.ruby_version_less_than?(2, 5)
10
11
  require_relative 'fast_ignore/backports/delete_prefix_suffix'
11
12
  using ::FastIgnore::Backports::DeletePrefixSuffix
@@ -13,6 +14,7 @@ class FastIgnore
13
14
  require_relative 'fast_ignore/backports/dir_each_child'
14
15
  using ::FastIgnore::Backports::DirEachChild
15
16
  end
17
+ # :nocov:
16
18
 
17
19
  def initialize( # rubocop:disable Metrics/ParameterLists, Metrics/MethodLength
18
20
  relative: false,
@@ -52,7 +54,6 @@ class FastIgnore
52
54
  path = ::File.expand_path(path)
53
55
  stat = ::File.stat(path)
54
56
  dir = stat.directory?
55
- return false unless stat.readable?
56
57
  return false if dir
57
58
 
58
59
  @rule_sets.all? { |r| r.allowed_recursive?(path, dir) }
@@ -71,7 +72,6 @@ class FastIgnore
71
72
  begin
72
73
  child = path + child
73
74
  stat = ::File.stat(child)
74
- next unless stat.readable?
75
75
 
76
76
  dir = stat.directory?
77
77
  next unless @rule_sets.all? { |r| r.allowed_unrecursive?(child, dir) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_ignore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dana Sherson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">"
32
32
  - !ruby/object:Gem::Version
33
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
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.18.5
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.18.5
97
111
  description:
98
112
  email:
99
113
  - robot@dana.sh
@@ -119,7 +133,6 @@ files:
119
133
  - lib/fast_ignore/backports.rb
120
134
  - lib/fast_ignore/backports/delete_prefix_suffix.rb
121
135
  - lib/fast_ignore/backports/dir_each_child.rb
122
- - lib/fast_ignore/backports/match.rb
123
136
  - lib/fast_ignore/rule.rb
124
137
  - lib/fast_ignore/rule_parser.rb
125
138
  - lib/fast_ignore/rule_set.rb
@@ -138,9 +151,9 @@ require_paths:
138
151
  - lib
139
152
  required_ruby_version: !ruby/object:Gem::Requirement
140
153
  requirements:
141
- - - ">="
154
+ - - "~>"
142
155
  - !ruby/object:Gem::Version
143
- version: '0'
156
+ version: '2.4'
144
157
  required_rubygems_version: !ruby/object:Gem::Requirement
145
158
  requirements:
146
159
  - - ">="
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This is a backport of ruby 2.4's match? method
4
- class FastIgnore
5
- module Backports
6
- module Match
7
- refine ::String do
8
- alias_method :match?, :match
9
- end
10
-
11
- refine ::Regexp do
12
- alias_method :match?, :match
13
- end
14
- end
15
- end
16
- end