glyptodont 0.2.0 → 0.3.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: 3cfa9e6366161885c86dbe07e79c0c14d57a58bbdf8c7e69d3683b6d96838dfe
4
- data.tar.gz: d71c6335cd02094e9bbabc72701c21e7cb6001617a2eddbb5884f68d496dff43
3
+ metadata.gz: 2da8dbfba96ec9503e38905a40127830fd2418ed24f047547c67d86dd11f3b56
4
+ data.tar.gz: cf21cce8ec2f2ba666217176318d6eda32598228a8d6cd5bf68106dfc411de2f
5
5
  SHA512:
6
- metadata.gz: 994f96b328e5beef3093bb344ec53f362c3fa2255da24338343069b9511fafd0be2999ecd8a5e60a43bb55966e8e155061ef43a1b0dca5acdf180b7f857bffa5
7
- data.tar.gz: 1e8200f3b8cce054163ba12d9e31a87267f12ea3c0796cb47809c7abf5d66f7603cd0fefb59cc6cfca1e7ffd5b2a533a0e080be15012b9223a081af8517ca2f7
6
+ metadata.gz: 05764bd33fd94ed756d475f4273e1369290e0513a222ae1b63a55ed962283bd3ceab321320dedaeb5bdccfa430953f299bdedc02edcf9fc3fe4c4858ef340bdc
7
+ data.tar.gz: 2efb6f3cf24915b5ad04b1d3450695e7818badb093eda713587e9a938f64ce2899a331334c2b528afa817234806f93eefe3e7253a13a72dfca2e944af5c5aee9
@@ -7,7 +7,7 @@ jobs:
7
7
  strategy:
8
8
  fail-fast: false
9
9
  matrix:
10
- ruby: ['2.4', '2.5', '2.6', '2.7', '3.0']
10
+ ruby: ['2.5', '2.6', '2.7', '3.0', '3.1']
11
11
  runs-on: ubuntu-latest
12
12
  steps:
13
13
  - name: Checkout
data/.rubocop.yml CHANGED
@@ -1,7 +1,6 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
- SuggestExtensions: false
4
- TargetRubyVersion: 2.4.0
3
+ TargetRubyVersion: 2.5
5
4
 
6
5
  Style/StringLiterals:
7
6
  Enabled: true
data/CHANGELOG.md CHANGED
@@ -8,7 +8,21 @@ and this project adheres to
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
- [Unreleased]: https://github.com/johnsyweb/glyptodont/compare/v0.2.0..main
11
+ [Unreleased]: https://github.com/johnsyweb/glyptodont/compare/v0.3.0..main
12
+
13
+ ## [0.3.0] - 2022-03-23
14
+
15
+ ### Added
16
+
17
+ - `keywords` option and configuration for TODO synonyms [[#5]]
18
+
19
+ ### Changed
20
+
21
+ - Dropped support for Ruby version older than 2.5 [[#4]]
22
+
23
+ [#4]: https://github.com/johnsyweb/glyptodont/pull/4
24
+ [#5]: https://github.com/johnsyweb/glyptodont/pull/5
25
+ [Unreleased]: https://github.com/johnsyweb/glyptodont/compare/v0.2.0..v0.3.0
12
26
 
13
27
  ## [0.2.0] - 2021-03-28
14
28
 
@@ -29,7 +43,7 @@ and this project adheres to
29
43
  [#2]: https://github.com/johnsyweb/glyptodont/pull/2
30
44
  [#3]: https://github.com/johnsyweb/glyptodont/pull/3
31
45
 
32
- [Unreleased]: https://github.com/johnsyweb/glyptodont/compare/v0.1.0..v0.2.0
46
+ [0.2.0]: https://github.com/johnsyweb/glyptodont/compare/v0.1.0..v0.2.0
33
47
 
34
48
  ## [0.1.0] - 2021-03-13
35
49
 
data/Gemfile CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- # Specify your gem's dependencies in glyptodont.gemspec
6
5
  gemspec
7
6
 
8
- gem "rake", "~> 13.0"
9
-
10
- gem "rspec", "~> 3.0"
11
- gem "rspec-its", "~> 1.3.0"
12
-
13
- gem "rubocop", "~> 1.7"
7
+ group :developement, :test do
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "rspec-its"
11
+ gem "rubocop"
12
+ gem "rubocop-rake"
13
+ gem "rubocop-rspec"
14
+ end
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 Pete Johns
3
+ Copyright (c) 2021-2022 Pete Johns
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Glyptodont
2
2
 
3
- Use this gem if you have ever deployed code to production without doing all of
4
- your to-dos.
3
+ Use this gem if you want to avoid deploying code to production without doing all
4
+ of your to-dos.
5
5
 
6
6
  ## Introduction
7
7
 
@@ -9,7 +9,7 @@ All of the glyptodonts have fossilised. This is a tool to ensure that your TODOs
9
9
  are eradicated before this can happen to them.
10
10
 
11
11
  If you've ever been caught out because a TODO in production code has not been
12
- don, this gem is for ***you***!
12
+ _done_, this gem is for ***you***!
13
13
 
14
14
  ## Development status [![Ruby](https://github.com/johnsyweb/glyptodont/actions/workflows/main.yml/badge.svg)](https://github.com/johnsyweb/glyptodont/actions/workflows/main.yml)
15
15
 
@@ -53,6 +53,7 @@ Usage: glyptodont [options]
53
53
  -d, --directory DIRECTORY Git repository to search for TODOs (default '.')
54
54
  -t, --threshold TODOS Maximum number of TODOs to allow (default 10)
55
55
  -m, --max-age DAYS Maximum number of days to allow TODOs to stay (default 14)
56
+ -k, --keywords TODO,WORDS Keywords to treat as 'TODO' (default FIXME,HACK,TODO,XXX)
56
57
  --version Show version
57
58
  ```
58
59
 
@@ -70,6 +71,8 @@ root of the directory being scanned.
70
71
  - `ignore`: List of `file_name:line_number` pairs to ignore when researching
71
72
  TODOs. This may be useful if you have, for example, Spanish language text in
72
73
  your project or you talk about TODOs a lot :-)
74
+ - `keywords`: List of synonyms for TODO in your project. I've seen some
75
+ interesting alternatives over the years.
73
76
 
74
77
  ### _Exempli gratiā_
75
78
 
@@ -86,7 +89,7 @@ ignore:
86
89
 
87
90
  ## Requirements
88
91
 
89
- - Ruby (tested against v2.4 and above)
92
+ - Ruby (tested against v2.5 and above)
90
93
  - Git
91
94
  - CMake
92
95
 
data/glyptodont.gemspec CHANGED
@@ -11,14 +11,15 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["paj+github@johnsy.com"]
12
12
 
13
13
  spec.summary = "A bit like `git grep 'T0D0'`, but better." # .tr("0", "O")
14
- spec.description = "Use this gem if you have ever deployed code to production without doing all of your to-dos"
14
+ spec.description = "Use this gem if you want to avoid deploying code to production without doing all of your to-dos"
15
15
  spec.homepage = GITHUB_URL
16
16
  spec.license = "MIT"
17
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
17
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
18
18
 
19
19
  spec.metadata["homepage_uri"] = spec.homepage
20
20
  spec.metadata["source_code_uri"] = GITHUB_URL
21
21
  spec.metadata["changelog_uri"] = "#{GITHUB_URL}blob/HEAD/CHANGELOG.md"
22
+ spec.metadata["rubygems_mfa_required"] = "true"
22
23
 
23
24
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
25
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
@@ -14,6 +14,12 @@ module Glyptodont
14
14
  class Checker
15
15
  DEFAULT_THRESHOLD = 10
16
16
  DEFAULT_MAX_AGE_IN_DAYS = 14
17
+ DEFAULT_KEYWORDS = %w[
18
+ FIXME
19
+ HACK
20
+ TODO
21
+ XXX
22
+ ].freeze
17
23
 
18
24
  def initialize(args)
19
25
  @options = Options.new(args)
@@ -21,7 +27,7 @@ module Glyptodont
21
27
  end
22
28
 
23
29
  def check
24
- todos = TodoResearcher.new(directory, ignore).research
30
+ todos = TodoResearcher.new(directory, ignore, keywords).research
25
31
 
26
32
  checks = [
27
33
  Checkers::Counter.new(todos: todos, threshold: threshold),
@@ -47,5 +53,9 @@ module Glyptodont
47
53
  def max_age_in_days
48
54
  options.max_age_in_days || configuration.max_age_in_days || DEFAULT_MAX_AGE_IN_DAYS
49
55
  end
56
+
57
+ def keywords
58
+ options.keywords || configuration.keywords || DEFAULT_KEYWORDS
59
+ end
50
60
  end
51
61
  end
@@ -24,6 +24,10 @@ module Glyptodont
24
24
  @max_age_in_days ||= config.fetch("max_age_in_days", nil)
25
25
  end
26
26
 
27
+ def keywords
28
+ @keywords ||= config.fetch("keywords", nil)
29
+ end
30
+
27
31
  private
28
32
 
29
33
  attr_reader :config_filename
@@ -7,7 +7,7 @@ require "optparse"
7
7
  module Glyptodont
8
8
  # Command-line options for the tool
9
9
  class Options
10
- attr_reader :directory, :threshold, :max_age_in_days
10
+ attr_reader :directory, :threshold, :max_age_in_days, :keywords
11
11
 
12
12
  def initialize(args)
13
13
  @args = args
@@ -24,6 +24,7 @@ module Glyptodont
24
24
  directory_option(opts)
25
25
  threshold_option(opts)
26
26
  max_age_in_days_option(opts)
27
+ keywords_option(opts)
27
28
  version_option(opts)
28
29
  end.parse!(@args)
29
30
  end
@@ -46,6 +47,15 @@ module Glyptodont
46
47
  end
47
48
  end
48
49
 
50
+ def keywords_option(opts)
51
+ opts.on("-k",
52
+ "--keywords TODO,WORDS",
53
+ Array,
54
+ "Keywords to treat as 'TODO' (default FIXME,HACK,TODO,XXX)") do |k|
55
+ @keywords = k
56
+ end
57
+ end
58
+
49
59
  def version_option(opts)
50
60
  opts.on_tail("--version", "Show version") do
51
61
  puts VERSION
@@ -6,9 +6,10 @@ require "rugged"
6
6
  module Glyptodont
7
7
  # Finds all the TODOs in a directory managed by Git, who last touched them and when.
8
8
  class TodoResearcher
9
- def initialize(directory, ignore)
9
+ def initialize(directory, ignore, keywords)
10
10
  @directory = directory
11
11
  @ignore = ignore
12
+ @keywords = Array(keywords)
12
13
  @annotator = {}
13
14
  end
14
15
 
@@ -18,7 +19,7 @@ module Glyptodont
18
19
 
19
20
  private
20
21
 
21
- attr_reader :directory, :ignore
22
+ attr_reader :directory, :ignore, :keywords
22
23
 
23
24
  def git
24
25
  Git.open(directory)
@@ -28,15 +29,6 @@ module Glyptodont
28
29
  "\\b\\(#{keywords.join('\|')}\\)\\b"
29
30
  end
30
31
 
31
- def keywords
32
- %w[
33
- FIXME
34
- HACK
35
- TODO
36
- XXX
37
- ]
38
- end
39
-
40
32
  def extract_details(todos)
41
33
  todos.flat_map do |sha, matches|
42
34
  file = sha.split(":", 2).last
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Glyptodont
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glyptodont
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Johns
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-28 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -38,8 +38,8 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Use this gem if you have ever deployed code to production without doing
42
- all of your to-dos
41
+ description: Use this gem if you want to avoid deploying code to production without
42
+ doing all of your to-dos
43
43
  email:
44
44
  - paj+github@johnsy.com
45
45
  executables:
@@ -85,6 +85,7 @@ metadata:
85
85
  homepage_uri: https://github.com/johnsyweb/glyptodont/
86
86
  source_code_uri: https://github.com/johnsyweb/glyptodont/
87
87
  changelog_uri: https://github.com/johnsyweb/glyptodont/blob/HEAD/CHANGELOG.md
88
+ rubygems_mfa_required: 'true'
88
89
  post_install_message:
89
90
  rdoc_options: []
90
91
  require_paths:
@@ -93,14 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - ">="
95
96
  - !ruby/object:Gem::Version
96
- version: 2.4.0
97
+ version: '2.5'
97
98
  required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  requirements:
99
100
  - - ">="
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubygems_version: 3.2.11
104
+ rubygems_version: 3.2.22
104
105
  signing_key:
105
106
  specification_version: 4
106
107
  summary: A bit like `git grep 'T0D0'`, but better.