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: []
|