goodcheck 2.5.1 → 3.0.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 +4 -4
- data/CHANGELOG.md +48 -2
- data/LICENSE +1 -1
- data/README.md +7 -444
- data/lib/goodcheck.rb +9 -4
- data/lib/goodcheck/analyzer.rb +13 -9
- data/lib/goodcheck/buffer.rb +11 -16
- data/lib/goodcheck/cli.rb +79 -57
- data/lib/goodcheck/commands/check.rb +41 -27
- data/lib/goodcheck/commands/config_loading.rb +28 -5
- data/lib/goodcheck/commands/init.rb +4 -2
- data/lib/goodcheck/commands/pattern.rb +2 -1
- data/lib/goodcheck/commands/test.rb +38 -30
- data/lib/goodcheck/config.rb +68 -1
- data/lib/goodcheck/config_loader.rb +41 -31
- data/lib/goodcheck/error.rb +3 -0
- data/lib/goodcheck/exit_status.rb +8 -0
- data/lib/goodcheck/glob.rb +14 -3
- data/lib/goodcheck/import_loader.rb +61 -17
- data/lib/goodcheck/issue.rb +3 -3
- data/lib/goodcheck/location.rb +28 -0
- data/lib/goodcheck/logger.rb +4 -4
- data/lib/goodcheck/reporters/json.rb +6 -1
- data/lib/goodcheck/reporters/text.rb +44 -11
- data/lib/goodcheck/rule.rb +3 -1
- data/lib/goodcheck/unarchiver.rb +40 -0
- data/lib/goodcheck/version.rb +1 -1
- metadata +47 -84
- data/.github/workflows/release.yml +0 -16
- data/.github/workflows/test.yml +0 -46
- data/.gitignore +0 -13
- data/.rubocop.yml +0 -5
- data/Dockerfile +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -75
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/cheatsheet.pdf +0 -0
- data/docusaurus/.dockerignore +0 -2
- data/docusaurus/.gitignore +0 -12
- data/docusaurus/Dockerfile +0 -10
- data/docusaurus/docker-compose.yml +0 -18
- data/docusaurus/docs/commands.md +0 -69
- data/docusaurus/docs/configuration.md +0 -300
- data/docusaurus/docs/development.md +0 -15
- data/docusaurus/docs/getstarted.md +0 -46
- data/docusaurus/docs/rules.md +0 -79
- data/docusaurus/website/README.md +0 -193
- data/docusaurus/website/core/Footer.js +0 -100
- data/docusaurus/website/package.json +0 -14
- data/docusaurus/website/pages/en/index.js +0 -207
- data/docusaurus/website/pages/en/versions.js +0 -118
- data/docusaurus/website/sidebars.json +0 -11
- data/docusaurus/website/siteConfig.js +0 -171
- data/docusaurus/website/static/css/code-block-buttons.css +0 -39
- data/docusaurus/website/static/css/custom.css +0 -245
- data/docusaurus/website/static/img/favicon.ico +0 -0
- data/docusaurus/website/static/js/code-block-buttons.js +0 -47
- data/docusaurus/website/versioned_docs/version-1.0.0/commands.md +0 -70
- data/docusaurus/website/versioned_docs/version-1.0.0/configuration.md +0 -296
- data/docusaurus/website/versioned_docs/version-1.0.0/development.md +0 -16
- data/docusaurus/website/versioned_docs/version-1.0.0/getstarted.md +0 -47
- data/docusaurus/website/versioned_docs/version-1.0.0/rules.md +0 -81
- data/docusaurus/website/versioned_docs/version-1.0.2/rules.md +0 -79
- data/docusaurus/website/versioned_docs/version-2.4.0/configuration.md +0 -301
- data/docusaurus/website/versioned_docs/version-2.4.3/rules.md +0 -80
- data/docusaurus/website/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
- data/docusaurus/website/versioned_sidebars/version-1.0.2-sidebars.json +0 -11
- data/docusaurus/website/versioned_sidebars/version-2.4.0-sidebars.json +0 -11
- data/docusaurus/website/versions.json +0 -11
- data/docusaurus/website/yarn.lock +0 -6806
- data/goodcheck.gemspec +0 -35
- data/goodcheck.yml +0 -10
- data/logo/GoodCheck Horizontal.pdf +0 -899
- data/logo/GoodCheck Horizontal.png +0 -0
- data/logo/GoodCheck Horizontal.svg +0 -55
- data/logo/GoodCheck logo.png +0 -0
- data/logo/GoodCheck vertical.png +0 -0
- data/sample.yml +0 -57
data/lib/goodcheck/glob.rb
CHANGED
@@ -1,21 +1,32 @@
|
|
1
1
|
module Goodcheck
|
2
2
|
class Glob
|
3
|
+
FNM_FLAGS = File::FNM_PATHNAME | File::FNM_EXTGLOB | File::FNM_DOTMATCH
|
4
|
+
|
3
5
|
attr_reader :pattern
|
4
6
|
attr_reader :encoding
|
7
|
+
attr_reader :exclude
|
5
8
|
|
6
|
-
def initialize(pattern:, encoding:)
|
9
|
+
def initialize(pattern:, encoding:, exclude:)
|
7
10
|
@pattern = pattern
|
8
11
|
@encoding = encoding
|
12
|
+
@exclude = exclude
|
9
13
|
end
|
10
14
|
|
11
15
|
def test(path)
|
12
|
-
path.fnmatch?(pattern,
|
16
|
+
path.fnmatch?(pattern, FNM_FLAGS) && !excluded?(path)
|
13
17
|
end
|
14
18
|
|
15
19
|
def ==(other)
|
16
20
|
other.is_a?(Glob) &&
|
17
21
|
other.pattern == pattern &&
|
18
|
-
other.encoding == encoding
|
22
|
+
other.encoding == encoding &&
|
23
|
+
other.exclude == exclude
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def excluded?(path)
|
29
|
+
Array(exclude).any? { |exc| path.fnmatch?(exc, FNM_FLAGS) }
|
19
30
|
end
|
20
31
|
end
|
21
32
|
end
|
@@ -1,13 +1,23 @@
|
|
1
1
|
module Goodcheck
|
2
2
|
class ImportLoader
|
3
|
-
class UnexpectedSchemaError <
|
3
|
+
class UnexpectedSchemaError < Error
|
4
4
|
attr_reader :uri
|
5
5
|
|
6
6
|
def initialize(uri)
|
7
|
+
super("Unexpected URI schema: #{uri.scheme}")
|
7
8
|
@uri = uri
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
12
|
+
class FileNotFound < Error
|
13
|
+
attr_reader :path
|
14
|
+
|
15
|
+
def initialize(path)
|
16
|
+
super("No such a file: #{path}")
|
17
|
+
@path = path
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
11
21
|
attr_reader :cache_path
|
12
22
|
attr_reader :expires_in
|
13
23
|
attr_reader :force_download
|
@@ -21,23 +31,39 @@ module Goodcheck
|
|
21
31
|
end
|
22
32
|
|
23
33
|
def load(name, &block)
|
24
|
-
uri =
|
34
|
+
uri = begin
|
35
|
+
URI.parse(name)
|
36
|
+
rescue URI::InvalidURIError
|
37
|
+
nil
|
38
|
+
end
|
25
39
|
|
26
|
-
case uri
|
27
|
-
when nil
|
28
|
-
load_file
|
40
|
+
case uri&.scheme
|
41
|
+
when nil
|
42
|
+
load_file name, &block
|
43
|
+
when "file"
|
44
|
+
load_file uri.path, &block
|
29
45
|
when "http", "https"
|
30
46
|
load_http uri, &block
|
31
47
|
else
|
32
|
-
raise UnexpectedSchemaError.new(
|
48
|
+
raise UnexpectedSchemaError.new(uri)
|
33
49
|
end
|
34
50
|
end
|
35
51
|
|
36
|
-
def load_file(
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
52
|
+
def load_file(path, &block)
|
53
|
+
files = Pathname.glob(File.join(config_path.parent.to_path, path), File::FNM_DOTMATCH | File::FNM_EXTGLOB).sort
|
54
|
+
if files.empty?
|
55
|
+
raise FileNotFound.new(path)
|
56
|
+
else
|
57
|
+
files.each do |file|
|
58
|
+
Goodcheck.logger.info "Reading file: #{file}"
|
59
|
+
if unarchiver.tar_gz?(file)
|
60
|
+
unarchiver.tar_gz(file.read) do |content, filename|
|
61
|
+
block.call(content, filename)
|
62
|
+
end
|
63
|
+
else
|
64
|
+
block.call(file.read, file.to_path)
|
65
|
+
end
|
66
|
+
end
|
41
67
|
end
|
42
68
|
end
|
43
69
|
|
@@ -45,7 +71,7 @@ module Goodcheck
|
|
45
71
|
Digest::SHA2.hexdigest(uri.to_s)
|
46
72
|
end
|
47
73
|
|
48
|
-
def load_http(uri)
|
74
|
+
def load_http(uri, &block)
|
49
75
|
hash = cache_name(uri)
|
50
76
|
path = cache_path + hash
|
51
77
|
|
@@ -71,13 +97,19 @@ module Goodcheck
|
|
71
97
|
if download
|
72
98
|
path.rmtree if path.exist?
|
73
99
|
Goodcheck.logger.info "Downloading content..."
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
100
|
+
if unarchiver.tar_gz?(uri.path)
|
101
|
+
unarchiver.tar_gz(http_get(uri)) do |content, filename|
|
102
|
+
block.call(content, filename)
|
103
|
+
write_cache "#{uri}/#{filename}", content
|
104
|
+
end
|
105
|
+
else
|
106
|
+
content = http_get(uri)
|
107
|
+
block.call(content, uri.path)
|
108
|
+
write_cache uri, content
|
109
|
+
end
|
78
110
|
else
|
79
111
|
Goodcheck.logger.info "Reading content from cache..."
|
80
|
-
|
112
|
+
block.call(path.read, path.to_path)
|
81
113
|
end
|
82
114
|
end
|
83
115
|
|
@@ -101,5 +133,17 @@ module Goodcheck
|
|
101
133
|
raise "Error: HTTP GET #{uri.inspect} #{res.inspect}"
|
102
134
|
end
|
103
135
|
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def unarchiver
|
140
|
+
@unarchiver ||=
|
141
|
+
begin
|
142
|
+
filter = ->(filename) {
|
143
|
+
%w[.yml .yaml].include?(File.extname(filename).downcase) && File.basename(filename) != DEFAULT_CONFIG_FILE
|
144
|
+
}
|
145
|
+
Unarchiver.new(file_filter: filter)
|
146
|
+
end
|
147
|
+
end
|
104
148
|
end
|
105
149
|
end
|
data/lib/goodcheck/issue.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
module Goodcheck
|
2
2
|
class Issue
|
3
3
|
attr_reader :buffer
|
4
|
-
attr_reader :range
|
5
4
|
attr_reader :rule
|
6
5
|
attr_reader :text
|
6
|
+
attr_reader :range
|
7
7
|
|
8
|
-
def initialize(buffer:,
|
8
|
+
def initialize(buffer:, rule:, text: nil, text_begin_pos: nil)
|
9
9
|
@buffer = buffer
|
10
|
-
@range = range
|
11
10
|
@rule = rule
|
12
11
|
@text = text
|
12
|
+
@range = text ? text_begin_pos..(text_begin_pos + text.bytesize - 1) : nil
|
13
13
|
@location = nil
|
14
14
|
end
|
15
15
|
|
data/lib/goodcheck/location.rb
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
module Goodcheck
|
2
|
+
# In the example below, each attribute is:
|
3
|
+
#
|
4
|
+
# - start_line: 2
|
5
|
+
# - start_column: 3
|
6
|
+
# - end_line: 2
|
7
|
+
# - end_column: 9
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# 1 |
|
12
|
+
# 2 | A matched text
|
13
|
+
# 3 | ^~~~~~~
|
14
|
+
# 3456789
|
15
|
+
#
|
2
16
|
class Location
|
3
17
|
attr_reader :start_line
|
4
18
|
attr_reader :start_column
|
@@ -12,6 +26,14 @@ module Goodcheck
|
|
12
26
|
@end_column = end_column
|
13
27
|
end
|
14
28
|
|
29
|
+
def one_line?
|
30
|
+
start_line == end_line
|
31
|
+
end
|
32
|
+
|
33
|
+
def column_size
|
34
|
+
end_column - start_column + 1
|
35
|
+
end
|
36
|
+
|
15
37
|
def ==(other)
|
16
38
|
other.is_a?(Location) &&
|
17
39
|
other.start_line == start_line &&
|
@@ -19,5 +41,11 @@ module Goodcheck
|
|
19
41
|
other.end_line == end_line &&
|
20
42
|
other.end_column == end_column
|
21
43
|
end
|
44
|
+
|
45
|
+
alias eql? ==
|
46
|
+
|
47
|
+
def hash
|
48
|
+
self.class.hash ^ start_line.hash ^ start_column.hash ^ end_line.hash ^ end_column.hash
|
49
|
+
end
|
22
50
|
end
|
23
51
|
end
|
data/lib/goodcheck/logger.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Goodcheck
|
2
2
|
def self.logger
|
3
|
-
@logger ||=
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
@logger ||= Logger.new(
|
4
|
+
STDERR, level: Logger::ERROR,
|
5
|
+
formatter: ->(severity, time, progname, msg) { "[#{severity}] #{msg}\n" }
|
6
|
+
)
|
7
7
|
end
|
8
8
|
end
|
@@ -26,7 +26,8 @@ module Goodcheck
|
|
26
26
|
end_column: location.end_column
|
27
27
|
},
|
28
28
|
message: issue.rule.message,
|
29
|
-
justifications: issue.rule.justifications
|
29
|
+
justifications: issue.rule.justifications,
|
30
|
+
severity: issue.rule.severity
|
30
31
|
}
|
31
32
|
end
|
32
33
|
stdout.puts ::JSON.dump(json)
|
@@ -44,6 +45,10 @@ module Goodcheck
|
|
44
45
|
def issue(issue)
|
45
46
|
issues << issue
|
46
47
|
end
|
48
|
+
|
49
|
+
def summary
|
50
|
+
# noop
|
51
|
+
end
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
@@ -5,6 +5,8 @@ module Goodcheck
|
|
5
5
|
|
6
6
|
def initialize(stdout:)
|
7
7
|
@stdout = stdout
|
8
|
+
@file_count = 0
|
9
|
+
@issue_count = 0
|
8
10
|
end
|
9
11
|
|
10
12
|
def analysis
|
@@ -12,6 +14,7 @@ module Goodcheck
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def file(path)
|
17
|
+
@file_count += 1
|
15
18
|
yield
|
16
19
|
end
|
17
20
|
|
@@ -20,21 +23,51 @@ module Goodcheck
|
|
20
23
|
end
|
21
24
|
|
22
25
|
def issue(issue)
|
26
|
+
@issue_count += 1
|
27
|
+
|
28
|
+
message = issue.rule.message.lines.first.chomp
|
29
|
+
|
23
30
|
if issue.location
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
start_line = issue.location.start_line
|
32
|
+
start_column = issue.location.start_column
|
33
|
+
start_column_index = start_column - 1
|
34
|
+
line = issue.buffer.line(start_line)
|
35
|
+
column_size = if issue.location.one_line?
|
36
|
+
issue.location.column_size
|
37
|
+
else
|
38
|
+
line.bytesize - start_column
|
39
|
+
end
|
40
|
+
rule = Rainbow("(#{issue.rule.id})").darkgray
|
41
|
+
severity = issue.rule.severity ? Rainbow("[#{issue.rule.severity}]").magenta : ""
|
42
|
+
stdout.puts "#{Rainbow(issue.path).cyan}:#{start_line}:#{start_column}: #{message} #{rule} #{severity}".strip
|
43
|
+
stdout.puts line.chomp
|
44
|
+
stdout.puts (" " * start_column_index) + Rainbow("^" + "~" * (column_size - 1)).yellow
|
32
45
|
else
|
33
|
-
|
34
|
-
line = line ? Rainbow(line).red : '-'
|
35
|
-
stdout.puts "#{issue.path}:-:#{line}:\t#{issue.rule.message.lines.first.chomp}"
|
46
|
+
stdout.puts "#{Rainbow(issue.path).cyan}:-:-: #{message}"
|
36
47
|
end
|
37
48
|
end
|
49
|
+
|
50
|
+
def summary
|
51
|
+
files = case @file_count
|
52
|
+
when 0
|
53
|
+
"no files"
|
54
|
+
when 1
|
55
|
+
"1 file"
|
56
|
+
else
|
57
|
+
"#{@file_count} files"
|
58
|
+
end
|
59
|
+
issues = case @issue_count
|
60
|
+
when 0
|
61
|
+
Rainbow("no issues").green
|
62
|
+
when 1
|
63
|
+
Rainbow("1 issue").red
|
64
|
+
else
|
65
|
+
Rainbow("#{@issue_count} issues").red
|
66
|
+
end
|
67
|
+
|
68
|
+
stdout.puts ""
|
69
|
+
stdout.puts "#{files} inspected, #{issues} detected"
|
70
|
+
end
|
38
71
|
end
|
39
72
|
end
|
40
73
|
end
|
data/lib/goodcheck/rule.rb
CHANGED
@@ -4,12 +4,14 @@ module Goodcheck
|
|
4
4
|
attr_reader :triggers
|
5
5
|
attr_reader :message
|
6
6
|
attr_reader :justifications
|
7
|
+
attr_reader :severity
|
7
8
|
|
8
|
-
def initialize(id:, triggers:, message:, justifications:)
|
9
|
+
def initialize(id:, triggers:, message:, justifications:, severity: nil)
|
9
10
|
@id = id
|
10
11
|
@triggers = triggers
|
11
12
|
@message = message
|
12
13
|
@justifications = justifications
|
14
|
+
@severity = severity
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Goodcheck
|
2
|
+
class Unarchiver
|
3
|
+
attr_reader :file_filter
|
4
|
+
|
5
|
+
def initialize(file_filter: ->(_filename) { true })
|
6
|
+
@file_filter = file_filter
|
7
|
+
end
|
8
|
+
|
9
|
+
def tar_gz?(filename)
|
10
|
+
name = filename.to_s.downcase
|
11
|
+
ext = ".tar.gz"
|
12
|
+
name.end_with?(ext) && name != ext
|
13
|
+
end
|
14
|
+
|
15
|
+
def tar_gz(content)
|
16
|
+
require "rubygems/package"
|
17
|
+
|
18
|
+
Gem::Package::TarReader.new(StringIO.new(gz(content))) do |tar_reader|
|
19
|
+
tar_reader.each do |file|
|
20
|
+
if file.file? && file_filter.call(file.full_name)
|
21
|
+
yield file.read, file.full_name
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def gz(content)
|
30
|
+
require "zlib"
|
31
|
+
|
32
|
+
io = Zlib::GzipReader.new(StringIO.new(content))
|
33
|
+
begin
|
34
|
+
io.read
|
35
|
+
ensure
|
36
|
+
io.close
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
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:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Sider Corporation
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,64 +28,64 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '13.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: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '5.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: simplecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '0.18'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '0.18'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: marcel
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '1.0'
|
76
76
|
- - "<"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: '
|
78
|
+
version: '2.0'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - ">="
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
85
|
+
version: '1.0'
|
86
86
|
- - "<"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '2.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: strong_json
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,16 +110,22 @@ dependencies:
|
|
110
110
|
name: rainbow
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- - "
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '3.0'
|
116
|
+
- - "<"
|
114
117
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
118
|
+
version: '4.0'
|
116
119
|
type: :runtime
|
117
120
|
prerelease: false
|
118
121
|
version_requirements: !ruby/object:Gem::Requirement
|
119
122
|
requirements:
|
120
|
-
- - "
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '3.0'
|
126
|
+
- - "<"
|
121
127
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
128
|
+
version: '4.0'
|
123
129
|
- !ruby/object:Gem::Dependency
|
124
130
|
name: psych
|
125
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,7 +135,7 @@ dependencies:
|
|
129
135
|
version: '3.1'
|
130
136
|
- - "<"
|
131
137
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
138
|
+
version: '5.0'
|
133
139
|
type: :runtime
|
134
140
|
prerelease: false
|
135
141
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -139,64 +145,20 @@ dependencies:
|
|
139
145
|
version: '3.1'
|
140
146
|
- - "<"
|
141
147
|
- !ruby/object:Gem::Version
|
142
|
-
version: '
|
143
|
-
description:
|
148
|
+
version: '5.0'
|
149
|
+
description: Goodcheck is a regexp based linter that allows you to define custom rules
|
150
|
+
in a YAML file.
|
144
151
|
email:
|
145
|
-
-
|
152
|
+
- support@siderlabs.com
|
146
153
|
executables:
|
147
154
|
- goodcheck
|
148
155
|
extensions: []
|
149
156
|
extra_rdoc_files: []
|
150
157
|
files:
|
151
|
-
- ".github/workflows/release.yml"
|
152
|
-
- ".github/workflows/test.yml"
|
153
|
-
- ".gitignore"
|
154
|
-
- ".rubocop.yml"
|
155
158
|
- CHANGELOG.md
|
156
|
-
- Dockerfile
|
157
|
-
- Gemfile
|
158
159
|
- LICENSE
|
159
160
|
- README.md
|
160
|
-
- Rakefile
|
161
|
-
- bin/console
|
162
|
-
- bin/setup
|
163
|
-
- cheatsheet.pdf
|
164
|
-
- docusaurus/.dockerignore
|
165
|
-
- docusaurus/.gitignore
|
166
|
-
- docusaurus/Dockerfile
|
167
|
-
- docusaurus/docker-compose.yml
|
168
|
-
- docusaurus/docs/commands.md
|
169
|
-
- docusaurus/docs/configuration.md
|
170
|
-
- docusaurus/docs/development.md
|
171
|
-
- docusaurus/docs/getstarted.md
|
172
|
-
- docusaurus/docs/rules.md
|
173
|
-
- docusaurus/website/README.md
|
174
|
-
- docusaurus/website/core/Footer.js
|
175
|
-
- docusaurus/website/package.json
|
176
|
-
- docusaurus/website/pages/en/index.js
|
177
|
-
- docusaurus/website/pages/en/versions.js
|
178
|
-
- docusaurus/website/sidebars.json
|
179
|
-
- docusaurus/website/siteConfig.js
|
180
|
-
- docusaurus/website/static/css/code-block-buttons.css
|
181
|
-
- docusaurus/website/static/css/custom.css
|
182
|
-
- docusaurus/website/static/img/favicon.ico
|
183
|
-
- docusaurus/website/static/js/code-block-buttons.js
|
184
|
-
- docusaurus/website/versioned_docs/version-1.0.0/commands.md
|
185
|
-
- docusaurus/website/versioned_docs/version-1.0.0/configuration.md
|
186
|
-
- docusaurus/website/versioned_docs/version-1.0.0/development.md
|
187
|
-
- docusaurus/website/versioned_docs/version-1.0.0/getstarted.md
|
188
|
-
- docusaurus/website/versioned_docs/version-1.0.0/rules.md
|
189
|
-
- docusaurus/website/versioned_docs/version-1.0.2/rules.md
|
190
|
-
- docusaurus/website/versioned_docs/version-2.4.0/configuration.md
|
191
|
-
- docusaurus/website/versioned_docs/version-2.4.3/rules.md
|
192
|
-
- docusaurus/website/versioned_sidebars/version-1.0.0-sidebars.json
|
193
|
-
- docusaurus/website/versioned_sidebars/version-1.0.2-sidebars.json
|
194
|
-
- docusaurus/website/versioned_sidebars/version-2.4.0-sidebars.json
|
195
|
-
- docusaurus/website/versions.json
|
196
|
-
- docusaurus/website/yarn.lock
|
197
161
|
- exe/goodcheck
|
198
|
-
- goodcheck.gemspec
|
199
|
-
- goodcheck.yml
|
200
162
|
- lib/goodcheck.rb
|
201
163
|
- lib/goodcheck/analyzer.rb
|
202
164
|
- lib/goodcheck/array_helper.rb
|
@@ -209,6 +171,8 @@ files:
|
|
209
171
|
- lib/goodcheck/commands/test.rb
|
210
172
|
- lib/goodcheck/config.rb
|
211
173
|
- lib/goodcheck/config_loader.rb
|
174
|
+
- lib/goodcheck/error.rb
|
175
|
+
- lib/goodcheck/exit_status.rb
|
212
176
|
- lib/goodcheck/glob.rb
|
213
177
|
- lib/goodcheck/home_path.rb
|
214
178
|
- lib/goodcheck/import_loader.rb
|
@@ -220,18 +184,17 @@ files:
|
|
220
184
|
- lib/goodcheck/reporters/text.rb
|
221
185
|
- lib/goodcheck/rule.rb
|
222
186
|
- lib/goodcheck/trigger.rb
|
187
|
+
- lib/goodcheck/unarchiver.rb
|
223
188
|
- lib/goodcheck/version.rb
|
224
|
-
|
225
|
-
- logo/GoodCheck Horizontal.png
|
226
|
-
- logo/GoodCheck Horizontal.svg
|
227
|
-
- logo/GoodCheck logo.png
|
228
|
-
- logo/GoodCheck vertical.png
|
229
|
-
- sample.yml
|
230
|
-
homepage: https://github.com/sider/goodcheck
|
189
|
+
homepage: https://sider.github.io/goodcheck/
|
231
190
|
licenses:
|
232
191
|
- MIT
|
233
|
-
metadata:
|
234
|
-
|
192
|
+
metadata:
|
193
|
+
homepage_uri: https://sider.github.io/goodcheck/
|
194
|
+
source_code_uri: https://github.com/sider/goodcheck
|
195
|
+
changelog_uri: https://github.com/sider/goodcheck/blob/master/CHANGELOG.md
|
196
|
+
bug_tracker_uri: https://github.com/sider/goodcheck/issues
|
197
|
+
post_install_message:
|
235
198
|
rdoc_options: []
|
236
199
|
require_paths:
|
237
200
|
- lib
|
@@ -239,15 +202,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
239
202
|
requirements:
|
240
203
|
- - ">="
|
241
204
|
- !ruby/object:Gem::Version
|
242
|
-
version: 2.
|
205
|
+
version: 2.5.0
|
243
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
244
207
|
requirements:
|
245
208
|
- - ">="
|
246
209
|
- !ruby/object:Gem::Version
|
247
210
|
version: '0'
|
248
211
|
requirements: []
|
249
|
-
rubygems_version: 3.
|
250
|
-
signing_key:
|
212
|
+
rubygems_version: 3.2.20
|
213
|
+
signing_key:
|
251
214
|
specification_version: 4
|
252
|
-
summary: Regexp based customizable linter
|
215
|
+
summary: Regexp based customizable linter.
|
253
216
|
test_files: []
|