fast_ignore 0.6.0 → 0.7.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: 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