goodcheck 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Dockerfile +21 -0
- data/Gemfile.lock +5 -5
- data/README.md +23 -4
- data/Rakefile +6 -0
- data/lib/goodcheck/config.rb +1 -1
- data/lib/goodcheck/config_loader.rb +3 -2
- data/lib/goodcheck/pattern.rb +7 -4
- data/lib/goodcheck/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 655728b9b54f9f48689ab1537e36db901b6e0ce7
|
4
|
+
data.tar.gz: 58b694b053b4fdf26c96c4b7369d87fffdac05cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3241668c77b0b0fcea6a1bf1db06002a2e4df90a91c1bab4013fc15fbb51d65a036e5da91a8e6938019aa59ff3552eb2d13f79b2bf533067d6e04cf62e5f3f8d
|
7
|
+
data.tar.gz: b5d60bbef44eef2f3c97b23dbcd8ae8f7cf4d2203dcdad431e86e675c9c123170ad79cba50e926c52a43c3e21e4f744d10d64a2c6397c8c9bea3f8ff499879b9
|
data/CHANGELOG.md
CHANGED
data/Dockerfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
FROM ruby:2.5.0-stretch
|
2
|
+
|
3
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
4
|
+
|
5
|
+
RUN apt-get update -y && \
|
6
|
+
apt-get install -y locales task-english && \
|
7
|
+
rm -rf /var/lib/apt/lists/*
|
8
|
+
RUN echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && \
|
9
|
+
locale-gen en_US.UTF-8 && \
|
10
|
+
update-locale en_US.UTF-8
|
11
|
+
ENV LC_ALL=en_US.UTF-8 \
|
12
|
+
LANG=en_US.UTF-8 \
|
13
|
+
LANGUAGE=en_US.UTF-8
|
14
|
+
|
15
|
+
RUN mkdir /goodcheck
|
16
|
+
WORKDIR /goodcheck
|
17
|
+
COPY . /goodcheck/
|
18
|
+
RUN bundle install && bundle exec rake install
|
19
|
+
|
20
|
+
RUN mkdir /work
|
21
|
+
WORKDIR /work
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
goodcheck (1.
|
4
|
+
goodcheck (1.1.0)
|
5
5
|
activesupport (~> 5.0)
|
6
6
|
rainbow (~> 3.0.0)
|
7
7
|
strong_json (~> 0.5.0)
|
@@ -9,20 +9,20 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (5.
|
12
|
+
activesupport (5.2.0)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
|
-
i18n (
|
14
|
+
i18n (>= 0.7, < 2)
|
15
15
|
minitest (~> 5.1)
|
16
16
|
tzinfo (~> 1.1)
|
17
17
|
concurrent-ruby (1.0.5)
|
18
|
-
i18n (0.
|
18
|
+
i18n (1.0.1)
|
19
19
|
concurrent-ruby (~> 1.0)
|
20
20
|
minitest (5.10.3)
|
21
21
|
rainbow (3.0.0)
|
22
22
|
rake (10.5.0)
|
23
23
|
strong_json (0.5.0)
|
24
24
|
thread_safe (0.3.6)
|
25
|
-
tzinfo (1.2.
|
25
|
+
tzinfo (1.2.5)
|
26
26
|
thread_safe (~> 0.1)
|
27
27
|
|
28
28
|
PLATFORMS
|
data/README.md
CHANGED
@@ -20,6 +20,8 @@ $ gem install goodcheck
|
|
20
20
|
|
21
21
|
Or you can use `bundler`!
|
22
22
|
|
23
|
+
If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-image).
|
24
|
+
|
23
25
|
## Quickstart
|
24
26
|
|
25
27
|
```bash
|
@@ -42,7 +44,7 @@ rules:
|
|
42
44
|
pattern: Github
|
43
45
|
message: |
|
44
46
|
GitHub is GitHub, not Github
|
45
|
-
|
47
|
+
|
46
48
|
You may misspelling the name of the service!
|
47
49
|
justifications:
|
48
50
|
- When you mean a service different from GitHub
|
@@ -72,7 +74,7 @@ A *pattern* can be a *literal pattern*, *regexp pattern*, *token pattern*, or a
|
|
72
74
|
When a string is given, it is interpreted as a *literal pattern* with `case_insensitive: false`.
|
73
75
|
|
74
76
|
#### *literal pattern*
|
75
|
-
|
77
|
+
|
76
78
|
*literal pattern* allows you to construct a regexp which matches exactly to the `literal` string.
|
77
79
|
|
78
80
|
```yaml
|
@@ -102,7 +104,7 @@ justification:
|
|
102
104
|
```
|
103
105
|
|
104
106
|
It accepts two optional attributes, `case_insensitive` and `multiline`.
|
105
|
-
The default
|
107
|
+
The default values of `case_insensitive` and `multiline` are `false`.
|
106
108
|
|
107
109
|
The regexp will be passed to `Regexp.compile`.
|
108
110
|
The precise definition of regular expression can be found in the documentation for Ruby.
|
@@ -115,7 +117,8 @@ The precise definition of regular expression can be found in the documentation f
|
|
115
117
|
id: com.sample.no-blink
|
116
118
|
pattern:
|
117
119
|
token: "<blink"
|
118
|
-
|
120
|
+
case_insensitive: true
|
121
|
+
message: Stop using <blink> tag
|
119
122
|
glob: "**/*.html"
|
120
123
|
justifications:
|
121
124
|
- If Lynx is the major target of the web site
|
@@ -128,6 +131,9 @@ In that case, try using *regexp pattern*.
|
|
128
131
|
The generated regexp of `<blink` is `<\s*blink\b`.
|
129
132
|
It matches with `<blink />` and `< BLINK>`, but does not match with `https://www.chromium.org/blink`.
|
130
133
|
|
134
|
+
It accepts one optional attribute, `case_insensitive`.
|
135
|
+
The default value of `case_insensitive` is `false`.
|
136
|
+
|
131
137
|
### *glob*
|
132
138
|
|
133
139
|
A *glob* can be a string, or a hash.
|
@@ -189,6 +195,19 @@ Available options is:
|
|
189
195
|
|
190
196
|
* `-c [CONFIG]`, `--config=[CONFIG]` to specify the configuration file.
|
191
197
|
|
198
|
+
## Docker image
|
199
|
+
|
200
|
+
You can use a docker image to use Goodcheck.
|
201
|
+
|
202
|
+
```bash
|
203
|
+
$ git clone https://github.com/sideci/goodcheck
|
204
|
+
$ cd goodcheck
|
205
|
+
$ docker build -t goodcheck:latest .
|
206
|
+
|
207
|
+
$ cd /path/to/your/project
|
208
|
+
$ docker run -it --rm -v "$(pwd):/work" goodcheck:latest goodcheck check
|
209
|
+
```
|
210
|
+
|
192
211
|
## Development
|
193
212
|
|
194
213
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
data/lib/goodcheck/config.rb
CHANGED
@@ -13,7 +13,7 @@ module Goodcheck
|
|
13
13
|
if rule.globs.empty?
|
14
14
|
[rule, nil]
|
15
15
|
else
|
16
|
-
glob = rule.globs.find {|glob| path.fnmatch?(glob.pattern, File::FNM_PATHNAME) }
|
16
|
+
glob = rule.globs.find {|glob| path.fnmatch?(glob.pattern, File::FNM_PATHNAME | File::FNM_EXTGLOB) }
|
17
17
|
if glob
|
18
18
|
[rule, glob]
|
19
19
|
end
|
@@ -7,7 +7,7 @@ module Goodcheck
|
|
7
7
|
Schema = StrongJSON.new do
|
8
8
|
let :regexp_pattern, object(regexp: string, case_insensitive: boolean?, multiline: boolean?)
|
9
9
|
let :literal_pattern, object(literal: string, case_insensitive: boolean?)
|
10
|
-
let :token_pattern, object(token: string)
|
10
|
+
let :token_pattern, object(token: string, case_insensitive: boolean?)
|
11
11
|
let :pattern, enum(regexp_pattern, literal_pattern, token_pattern, string)
|
12
12
|
|
13
13
|
let :encoding, enum(*Encoding.name_list.map {|name| literal(name) })
|
@@ -82,7 +82,8 @@ module Goodcheck
|
|
82
82
|
Pattern.regexp(regexp, case_insensitive: ci, multiline: multiline)
|
83
83
|
when pattern[:token]
|
84
84
|
tok = pattern[:token]
|
85
|
-
|
85
|
+
ci = pattern[:case_insensitive]
|
86
|
+
Pattern.token(tok, case_insensitive: ci)
|
86
87
|
end
|
87
88
|
end
|
88
89
|
end
|
data/lib/goodcheck/pattern.rb
CHANGED
@@ -20,11 +20,11 @@ module Goodcheck
|
|
20
20
|
new(source: regexp, regexp: Regexp.compile(regexp, options))
|
21
21
|
end
|
22
22
|
|
23
|
-
def self.token(tokens)
|
24
|
-
new(source: tokens, regexp: compile_tokens(tokens))
|
23
|
+
def self.token(tokens, case_insensitive:)
|
24
|
+
new(source: tokens, regexp: compile_tokens(tokens, case_insensitive: case_insensitive))
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.compile_tokens(source)
|
27
|
+
def self.compile_tokens(source, case_insensitive:)
|
28
28
|
tokens = []
|
29
29
|
s = StringScanner.new(source)
|
30
30
|
|
@@ -51,7 +51,10 @@ module Goodcheck
|
|
51
51
|
tokens.last << '\b'
|
52
52
|
end
|
53
53
|
|
54
|
-
|
54
|
+
options = Regexp::MULTILINE
|
55
|
+
options |= Regexp::IGNORECASE if case_insensitive
|
56
|
+
|
57
|
+
Regexp.new(tokens.join('\s*').gsub(/\\s\*(\\s\+\\s\*)+/, '\s+'), options)
|
55
58
|
end
|
56
59
|
end
|
57
60
|
end
|
data/lib/goodcheck/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goodcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- ".gitignore"
|
106
106
|
- ".travis.yml"
|
107
107
|
- CHANGELOG.md
|
108
|
+
- Dockerfile
|
108
109
|
- Gemfile
|
109
110
|
- Gemfile.lock
|
110
111
|
- LICENSE
|