git-lint 2.3.2 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/LICENSE.adoc +207 -155
  4. data/README.adoc +208 -223
  5. data/{bin → exe}/git-lint +1 -3
  6. data/lib/git/lint/analyzer.rb +76 -0
  7. data/lib/git/lint/analyzers/abstract.rb +8 -18
  8. data/lib/git/lint/analyzers/commit_author_capitalization.rb +3 -9
  9. data/lib/git/lint/analyzers/commit_author_email.rb +3 -9
  10. data/lib/git/lint/analyzers/commit_author_name.rb +5 -14
  11. data/lib/git/lint/analyzers/commit_body_bullet.rb +2 -9
  12. data/lib/git/lint/analyzers/commit_body_bullet_capitalization.rb +2 -9
  13. data/lib/git/lint/analyzers/commit_body_bullet_delimiter.rb +2 -9
  14. data/lib/git/lint/analyzers/commit_body_leading_line.rb +1 -7
  15. data/lib/git/lint/analyzers/commit_body_line_length.rb +4 -11
  16. data/lib/git/lint/analyzers/commit_body_paragraph_capitalization.rb +1 -7
  17. data/lib/git/lint/analyzers/commit_body_phrase.rb +2 -38
  18. data/lib/git/lint/analyzers/commit_body_presence.rb +5 -12
  19. data/lib/git/lint/analyzers/commit_body_single_bullet.rb +2 -9
  20. data/lib/git/lint/analyzers/commit_body_tracker_shorthand.rb +27 -0
  21. data/lib/git/lint/analyzers/commit_subject_length.rb +4 -11
  22. data/lib/git/lint/analyzers/commit_subject_prefix.rb +2 -9
  23. data/lib/git/lint/analyzers/commit_subject_suffix.rb +2 -13
  24. data/lib/git/lint/analyzers/commit_trailer_collaborator_capitalization.rb +3 -12
  25. data/lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb +3 -11
  26. data/lib/git/lint/analyzers/commit_trailer_collaborator_email.rb +3 -12
  27. data/lib/git/lint/analyzers/commit_trailer_collaborator_key.rb +4 -13
  28. data/lib/git/lint/analyzers/commit_trailer_collaborator_name.rb +5 -15
  29. data/lib/git/lint/cli/actions/analyze/branch.rb +43 -0
  30. data/lib/git/lint/cli/actions/analyze/commit.rb +44 -0
  31. data/lib/git/lint/cli/actions/config.rb +37 -0
  32. data/lib/git/lint/cli/actions/hook.rb +34 -0
  33. data/lib/git/lint/cli/parser.rb +33 -0
  34. data/lib/git/lint/cli/parsers/analyze.rb +40 -0
  35. data/lib/git/lint/cli/parsers/core.rb +72 -0
  36. data/lib/git/lint/cli/shell.rb +56 -0
  37. data/lib/git/lint/collector.rb +3 -4
  38. data/lib/git/lint/commits/container.rb +19 -0
  39. data/lib/git/lint/commits/loader.rb +51 -0
  40. data/lib/git/lint/commits/systems/circle_ci.rb +26 -0
  41. data/lib/git/lint/{branches/environments → commits/systems}/git_hub_action.rb +10 -8
  42. data/lib/git/lint/commits/systems/local.rb +26 -0
  43. data/lib/git/lint/{branches/environments → commits/systems}/netlify_ci.rb +14 -10
  44. data/lib/git/lint/configuration/content.rb +26 -0
  45. data/lib/git/lint/configuration/defaults.yml +118 -0
  46. data/lib/git/lint/configuration/loader.rb +50 -0
  47. data/lib/git/lint/configuration/setting.rb +24 -0
  48. data/lib/git/lint/container.rb +41 -0
  49. data/lib/git/lint/errors/severity.rb +1 -0
  50. data/lib/git/lint/errors/sha.rb +1 -0
  51. data/lib/git/lint/identity.rb +3 -2
  52. data/lib/git/lint/kit/filter_list.rb +1 -1
  53. data/lib/git/lint/parsers/trailers/collaborator.rb +1 -0
  54. data/lib/git/lint/rake/tasks.rb +5 -4
  55. data/lib/git/lint/reporters/branch.rb +12 -6
  56. data/lib/git/lint/reporters/commit.rb +3 -1
  57. data/lib/git/lint/reporters/line.rb +3 -5
  58. data/lib/git/lint/reporters/lines/paragraph.rb +3 -0
  59. data/lib/git/lint/reporters/lines/sentence.rb +3 -0
  60. data/lib/git/lint/reporters/style.rb +3 -1
  61. data/lib/git/lint/validators/capitalization.rb +1 -0
  62. data/lib/git/lint/validators/email.rb +1 -0
  63. data/lib/git/lint/validators/name.rb +1 -0
  64. data/lib/git/lint.rb +18 -47
  65. data.tar.gz.sig +3 -3
  66. metadata +55 -29
  67. metadata.gz.sig +0 -0
  68. data/lib/git/lint/analyzers/commit_body_issue_tracker_link.rb +0 -39
  69. data/lib/git/lint/branches/environments/circle_ci.rb +0 -24
  70. data/lib/git/lint/branches/environments/local.rb +0 -24
  71. data/lib/git/lint/branches/environments/travis_ci.rb +0 -49
  72. data/lib/git/lint/branches/feature.rb +0 -42
  73. data/lib/git/lint/cli.rb +0 -117
  74. data/lib/git/lint/refinements/strings.rb +0 -21
  75. data/lib/git/lint/runner.rb +0 -35
@@ -0,0 +1,118 @@
1
+ :analyzers:
2
+ :commit_author_capitalization:
3
+ :enabled: true
4
+ :severity: :error
5
+ :commit_author_email:
6
+ :enabled: true
7
+ :severity: :error
8
+ :commit_author_name:
9
+ :enabled: true
10
+ :severity: :error
11
+ :minimum: 2
12
+ :commit_body_bullet:
13
+ :enabled: true
14
+ :severity: :error
15
+ :excludes:
16
+ - "\\*"
17
+ - "•"
18
+ :commit_body_bullet_capitalization:
19
+ :enabled: true
20
+ :severity: :error
21
+ :includes: "\\-"
22
+ :commit_body_bullet_delimiter:
23
+ :enabled: true
24
+ :severity: :error
25
+ :includes: "\\-"
26
+ :commit_body_tracker_shorthand:
27
+ :enabled: true
28
+ :severity: :error
29
+ :excludes:
30
+ - "(f|F)ix(es|ed)?\\s\\#\\d+"
31
+ - "(c|C)lose(s|d)?\\s\\#\\d+"
32
+ - "(r|R)esolve(s|d)?\\s\\#\\d+"
33
+ :commit_body_leading_line:
34
+ :enabled: false
35
+ :severity: :warn
36
+ :commit_body_line_length:
37
+ :enabled: true
38
+ :severity: :error
39
+ :maximum: 72
40
+ :commit_body_paragraph_capitalization:
41
+ :enabled: true
42
+ :severity: :error
43
+ :commit_body_phrase:
44
+ :enabled: true
45
+ :severity: :error
46
+ :excludes:
47
+ - "absolutely"
48
+ - "actually"
49
+ - "all intents and purposes"
50
+ - "along the lines"
51
+ - "at this moment in time"
52
+ - "basically"
53
+ - "each and every one"
54
+ - "everyone knows"
55
+ - "fact of the matter"
56
+ - "furthermore"
57
+ - "however"
58
+ - "in due course"
59
+ - "in the end"
60
+ - "last but not least"
61
+ - "matter of fact"
62
+ - "obviously"
63
+ - "of course"
64
+ - "really"
65
+ - "simply"
66
+ - "things being equal"
67
+ - "would like to"
68
+ - "\\beasy\\b"
69
+ - "\\bjust\\b"
70
+ - "\\bquite\\b"
71
+ - "as\\sfar\\sas\\s.+\\sconcerned"
72
+ - "of\\sthe\\s(fact|opinion)\\sthat"
73
+ :commit_body_presence:
74
+ :enabled: false
75
+ :severity: :warn
76
+ :minimum: 1
77
+ :commit_body_single_bullet:
78
+ :enabled: true
79
+ :severity: :error
80
+ :includes: "\\-"
81
+ :commit_subject_length:
82
+ :enabled: true
83
+ :severity: :error
84
+ :maximum: 72
85
+ :commit_subject_prefix:
86
+ :enabled: true
87
+ :severity: :error
88
+ :includes:
89
+ - Fixed
90
+ - Added
91
+ - Updated
92
+ - Removed
93
+ - Refactored
94
+ :commit_subject_suffix:
95
+ :enabled: true
96
+ :severity: :error
97
+ :excludes:
98
+ - "\\."
99
+ - "\\?"
100
+ - "\\!"
101
+ :commit_trailer_collaborator_capitalization:
102
+ :enabled: true
103
+ :severity: :error
104
+ :commit_trailer_collaborator_duplication:
105
+ :enabled: true
106
+ :severity: :error
107
+ :commit_trailer_collaborator_email:
108
+ :enabled: true
109
+ :severity: :error
110
+ :commit_trailer_collaborator_key:
111
+ :enabled: true
112
+ :severity: :error
113
+ :includes:
114
+ - "Co-Authored-By"
115
+ :commit_trailer_collaborator_name:
116
+ :enabled: true
117
+ :severity: :error
118
+ :minimum: 2
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "refinements/hashes"
5
+ require "refinements/structs"
6
+ require "runcom"
7
+ require "yaml"
8
+
9
+ module Git
10
+ module Lint
11
+ module Configuration
12
+ # Represents the fully assembled Command Line Interface (CLI) configuration.
13
+ class Loader
14
+ using ::Refinements::Hashes
15
+ using ::Refinements::Structs
16
+
17
+ DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
18
+ CLIENT = Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS
19
+
20
+ def self.call = new.call
21
+
22
+ def self.with_defaults = new(client: DEFAULTS)
23
+
24
+ def initialize content: Content.new, client: CLIENT, setting: Setting
25
+ @content = content
26
+ @client = client
27
+ @setting = setting
28
+ end
29
+
30
+ def call
31
+ client.to_h
32
+ .then do |defaults|
33
+ content.merge(
34
+ **defaults.except(:analyzers).flatten_keys,
35
+ analyzers: load_analyzer_settings(defaults)
36
+ ).freeze
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ attr_reader :content, :client, :setting
43
+
44
+ def load_analyzer_settings defaults
45
+ defaults.fetch(:analyzers).map { |id, body| setting[id:, **body] }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Git
4
+ module Lint
5
+ module Configuration
6
+ # Defines analyzer specific settings.
7
+ Setting = Struct.new(
8
+ :enabled,
9
+ :excludes,
10
+ :id,
11
+ :includes,
12
+ :maximum,
13
+ :minimum,
14
+ :severity,
15
+ keyword_init: true
16
+ ) do
17
+ def initialize *arguments
18
+ super
19
+ freeze
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry-container"
4
+ require "git_plus"
5
+ require "logger"
6
+ require "pastel"
7
+
8
+ module Git
9
+ module Lint
10
+ # Provides a global gem container for injection into other objects.
11
+ module Container
12
+ extend Dry::Container::Mixin
13
+
14
+ register(:configuration) { Configuration::Loader.call }
15
+ register(:repository) { GitPlus::Repository.new }
16
+ register(:colorizer) { Pastel.new enabled: $stdout.tty? }
17
+ register(:kernel) { Kernel }
18
+
19
+ register :log_colors do
20
+ {
21
+ "DEBUG" => self[:colorizer].white.detach,
22
+ "INFO" => self[:colorizer].green.detach,
23
+ "WARN" => self[:colorizer].yellow.detach,
24
+ "ERROR" => self[:colorizer].red.detach,
25
+ "FATAL" => self[:colorizer].white.bold.on_red.detach,
26
+ "ANY" => self[:colorizer].white.bold.detach
27
+ }
28
+ end
29
+
30
+ register :logger do
31
+ Logger.new $stdout,
32
+ level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
33
+ formatter: (
34
+ lambda do |severity, _at, _name, message|
35
+ self[:log_colors][severity].call "#{message}\n"
36
+ end
37
+ )
38
+ end
39
+ end
40
+ end
41
+ end
@@ -3,6 +3,7 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Errors
6
+ # Categorizes severity errors.
6
7
  class Severity < Base
7
8
  def initialize level
8
9
  super %(Invalid severity level: #{level}. Use: #{Analyzers::Abstract::LEVELS.join ", "}.)
@@ -3,6 +3,7 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Errors
6
+ # Categorizes commit SHA errors.
6
7
  class SHA < Base
7
8
  def initialize sha
8
9
  super %(Invalid commit SHA: "#{sha}". Unable to obtain commit details.)
@@ -6,8 +6,9 @@ module Git
6
6
  module Identity
7
7
  NAME = "git-lint"
8
8
  LABEL = "Git Lint"
9
- VERSION = "2.3.2"
10
- VERSION_LABEL = "#{LABEL} #{VERSION}"
9
+ VERSION = "3.0.1"
10
+ VERSION_LABEL = "#{LABEL} #{VERSION}".freeze
11
+ SUMMARY = "A command line interface for linting Git commits."
11
12
  end
12
13
  end
13
14
  end
@@ -3,8 +3,8 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Kit
6
+ # Represents an regular expression list which may be used as an analyzer setting.
6
7
  class FilterList
7
- # Represents an regular expression list which may be used as an analyzer setting.
8
8
  def initialize list = []
9
9
  @list = Array list
10
10
  end
@@ -4,6 +4,7 @@ module Git
4
4
  module Lint
5
5
  module Parsers
6
6
  module Trailers
7
+ # Parses collaborator information within a commit trailer.
7
8
  class Collaborator
8
9
  DEFAULT_KEY_PATTERN = /\ACo.*Authored.*By.*\Z/i
9
10
 
@@ -6,25 +6,26 @@ require "git/lint"
6
6
  module Git
7
7
  module Lint
8
8
  module Rake
9
+ # Defines and installs Rake tasks for use in downstream projects.
9
10
  class Tasks
10
11
  include ::Rake::DSL
11
12
 
12
13
  def self.setup = new.install
13
14
 
14
- def initialize cli: CLI
15
- @cli = cli
15
+ def initialize shell: CLI::Shell.new
16
+ @shell = shell
16
17
  end
17
18
 
18
19
  def install
19
20
  desc "Run Git Lint"
20
21
  task :git_lint do
21
- cli.start ["--analyze"]
22
+ shell.call ["--analyze"]
22
23
  end
23
24
  end
24
25
 
25
26
  private
26
27
 
27
- attr_reader :cli
28
+ attr_reader :shell
28
29
  end
29
30
  end
30
31
  end
@@ -7,7 +7,7 @@ module Git
7
7
  module Reporters
8
8
  # Reports issues related to a single branch.
9
9
  class Branch
10
- using GitPlus::Refinements::Strings
10
+ using ::Refinements::Strings
11
11
 
12
12
  def initialize collector: Collector.new, colorizer: Pastel.new
13
13
  @collector = collector
@@ -19,6 +19,8 @@ module Git
19
19
  "#{commit_total}. #{issue_totals}.\n"
20
20
  end
21
21
 
22
+ alias to_str to_s
23
+
22
24
  private
23
25
 
24
26
  attr_reader :collector, :colorizer
@@ -31,12 +33,13 @@ module Git
31
33
 
32
34
  def commit_report
33
35
  collector.to_h.reduce "" do |details, (commit, analyzers)|
34
- details + Commit.new(commit: commit, analyzers: analyzers).to_s
36
+ details + Commit.new(commit:, analyzers:)
35
37
  end
36
38
  end
37
39
 
38
40
  def commit_total
39
- %(#{"commit".pluralize count: collector.total_commits} inspected)
41
+ total = collector.total_commits
42
+ %(#{total} #{"commit".pluralize "s", count: total} inspected)
40
43
  end
41
44
 
42
45
  def issue_totals
@@ -49,17 +52,20 @@ module Git
49
52
 
50
53
  def issue_total
51
54
  color = collector.errors? ? :red : :yellow
52
- colorizer.public_send color, "issue".pluralize(count: collector.total_issues)
55
+ total = collector.total_issues
56
+ colorizer.public_send color, "#{total} issue".pluralize("s", count: total)
53
57
  end
54
58
 
55
59
  def warning_total
56
60
  color = collector.warnings? ? :yellow : :green
57
- colorizer.public_send color, "warning".pluralize(count: collector.total_warnings)
61
+ total = collector.total_warnings
62
+ colorizer.public_send color, "#{total} warning".pluralize("s", count: total)
58
63
  end
59
64
 
60
65
  def error_total
61
66
  color = collector.errors? ? :red : :green
62
- colorizer.public_send color, "error".pluralize(count: collector.total_errors)
67
+ total = collector.total_errors
68
+ colorizer.public_send color, "#{total} error".pluralize("s", count: total)
63
69
  end
64
70
  end
65
71
  end
@@ -17,11 +17,13 @@ module Git
17
17
  "#{commit.subject}\n#{report}\n"
18
18
  end
19
19
 
20
+ alias to_str to_s
21
+
20
22
  private
21
23
 
22
24
  attr_reader :commit, :analyzers
23
25
 
24
- def report = analyzers.reduce("") { |report, analyzer| report + Style.new(analyzer).to_s }
26
+ def report = analyzers.reduce("") { |report, analyzer| report + Style.new(analyzer) }
25
27
  end
26
28
  end
27
29
  end
@@ -12,13 +12,11 @@ module Git
12
12
  end
13
13
 
14
14
  def to_s
15
- if content.include? "\n"
16
- Lines::Paragraph.new(data).to_s
17
- else
18
- Lines::Sentence.new(data).to_s
19
- end
15
+ content.include?("\n") ? Lines::Paragraph.new(data).to_s : Lines::Sentence.new(data).to_s
20
16
  end
21
17
 
18
+ alias to_str to_s
19
+
22
20
  private
23
21
 
24
22
  attr_reader :data
@@ -4,6 +4,7 @@ module Git
4
4
  module Lint
5
5
  module Reporters
6
6
  module Lines
7
+ # Reports paragraph details.
7
8
  class Paragraph
8
9
  def initialize data = {}
9
10
  @data = data
@@ -13,6 +14,8 @@ module Git
13
14
  %(#{label}"#{paragraph}"\n)
14
15
  end
15
16
 
17
+ alias to_str to_s
18
+
16
19
  private
17
20
 
18
21
  attr_reader :data
@@ -4,6 +4,7 @@ module Git
4
4
  module Lint
5
5
  module Reporters
6
6
  module Lines
7
+ # Reports sentence details.
7
8
  class Sentence
8
9
  def initialize data = {}
9
10
  @data = data
@@ -11,6 +12,8 @@ module Git
11
12
 
12
13
  def to_s = %(#{Line::DEFAULT_INDENT}Line #{number}: "#{content}"\n)
13
14
 
15
+ alias to_str to_s
16
+
14
17
  private
15
18
 
16
19
  attr_reader :data
@@ -15,6 +15,8 @@ module Git
15
15
 
16
16
  def to_s = colorizer.public_send(color, message)
17
17
 
18
+ alias to_str to_s
19
+
18
20
  private
19
21
 
20
22
  attr_reader :analyzer, :issue, :colorizer
@@ -42,7 +44,7 @@ module Git
42
44
  end
43
45
 
44
46
  def affected_lines
45
- issue.fetch(:lines, []).reduce("") { |lines, line| lines + Line.new(line).to_s }
47
+ issue.fetch(:lines, []).reduce("") { |lines, line| lines + Line.new(line) }
46
48
  end
47
49
  end
48
50
  end
@@ -3,6 +3,7 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Validators
6
+ # Validates the capitalizationn of text.
6
7
  class Capitalization
7
8
  DEFAULT_PATTERN = /\A[[:upper:]].*\Z/
8
9
 
@@ -5,6 +5,7 @@ require "uri"
5
5
  module Git
6
6
  module Lint
7
7
  module Validators
8
+ # Validates the format of email addresses.
8
9
  class Email
9
10
  def initialize text, pattern: URI::MailTo::EMAIL_REGEXP
10
11
  @text = text
@@ -3,6 +3,7 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Validators
6
+ # Validates the format of names.
6
7
  class Name
7
8
  DEFAULT_DELIMITER = /\s{1}/
8
9
  DEFAULT_MINIMUM = 2
data/lib/git/lint.rb CHANGED
@@ -1,50 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "zeitwerk"
3
4
  require "git_plus"
4
- require "git/lint/identity"
5
- require "git/lint/refinements/strings"
6
- require "git/lint/errors/base"
7
- require "git/lint/errors/severity"
8
- require "git/lint/errors/sha"
9
- require "git/lint/kit/filter_list"
10
- require "git/lint/validators/email"
11
- require "git/lint/validators/name"
12
- require "git/lint/validators/capitalization"
13
- require "git/lint/parsers/trailers/collaborator"
14
- require "git/lint/branches/environments/local"
15
- require "git/lint/branches/environments/circle_ci"
16
- require "git/lint/branches/environments/git_hub_action"
17
- require "git/lint/branches/environments/netlify_ci"
18
- require "git/lint/branches/environments/travis_ci"
19
- require "git/lint/branches/feature"
20
- require "git/lint/analyzers/abstract"
21
- require "git/lint/analyzers/commit_author_capitalization"
22
- require "git/lint/analyzers/commit_author_email"
23
- require "git/lint/analyzers/commit_author_name"
24
- require "git/lint/analyzers/commit_body_bullet"
25
- require "git/lint/analyzers/commit_body_bullet_capitalization"
26
- require "git/lint/analyzers/commit_body_bullet_delimiter"
27
- require "git/lint/analyzers/commit_body_issue_tracker_link"
28
- require "git/lint/analyzers/commit_body_leading_line"
29
- require "git/lint/analyzers/commit_body_line_length"
30
- require "git/lint/analyzers/commit_body_paragraph_capitalization"
31
- require "git/lint/analyzers/commit_body_phrase"
32
- require "git/lint/analyzers/commit_body_presence"
33
- require "git/lint/analyzers/commit_body_single_bullet"
34
- require "git/lint/analyzers/commit_subject_length"
35
- require "git/lint/analyzers/commit_subject_prefix"
36
- require "git/lint/analyzers/commit_subject_suffix"
37
- require "git/lint/analyzers/commit_trailer_collaborator_capitalization"
38
- require "git/lint/analyzers/commit_trailer_collaborator_duplication"
39
- require "git/lint/analyzers/commit_trailer_collaborator_email"
40
- require "git/lint/analyzers/commit_trailer_collaborator_key"
41
- require "git/lint/analyzers/commit_trailer_collaborator_name"
42
- require "git/lint/collector"
43
- require "git/lint/reporters/lines/sentence"
44
- require "git/lint/reporters/lines/paragraph"
45
- require "git/lint/reporters/line"
46
- require "git/lint/reporters/style"
47
- require "git/lint/reporters/commit"
48
- require "git/lint/reporters/branch"
49
- require "git/lint/runner"
50
- require "git/lint/cli"
5
+
6
+ Zeitwerk::Loader.new.then do |loader|
7
+ loader.inflector.inflect "cli" => "CLI",
8
+ "sha" => "SHA",
9
+ "circle_ci" => "CircleCI",
10
+ "netlify_ci" => "NetlifyCI",
11
+ "travis_ci" => "TravisCI"
12
+ loader.push_dir "#{__dir__}/.."
13
+ loader.ignore "#{__dir__}/lint/rake/setup.rb"
14
+ loader.setup
15
+ end
16
+
17
+ module Git
18
+ # Main namespace.
19
+ module Lint
20
+ end
21
+ end
data.tar.gz.sig CHANGED
@@ -1,3 +1,3 @@
1
- _f�
2
- s:��v:��~���.�3ifJ��^AlN8M0��4QdE����D�$����;"��tzt��ǃ�$�ݒS���~fƮvV���$!V�������.n�L�f�?
3
- "f~l����v��:���s!��a��b��y�h̜�H�1��� �d  e�]�g�#�N�M8#�/���VP:KD!SJE��܏��͓�n2 0�5i�HU;�F�� �H[ȑ���� ��]�V�d?!Kj�
1
+ 2*�D���U%u$�N���ӊp�/5��=�2��RR&T��P��w�H� �j��H*"��>,�<���<vM��tP*W ��]y
2
+ ���9I*��qb������\#��,2ɩ�?���6t3���4r��B{lH���� �� F8����
3
+ ����m#v