smart_todo 1.5.0 → 1.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4daea874da20235bc9b20d315058644bafb73e78b14c6c266f6252f4b346bcf1
4
- data.tar.gz: feb305070b73a03e2481515a914cca2fcaad264f3871cd65e242bf58ccb3612f
3
+ metadata.gz: c17d1471d893e5a764dda2fa9adcfc73049b5c5a45d6678feca40104879065fc
4
+ data.tar.gz: 85411f13bc189f060372e90a72fc1a545cd0030b6f67cf0fd75f1ff97dbeb755
5
5
  SHA512:
6
- metadata.gz: 7fcba36662ce881114aafa3f5bba320d767c3e299a1d9d91f06a505107815d631c008ed87a1e853d1bb2766c1e9bdce756125ccc9c5ed65917264f962da62814
7
- data.tar.gz: 981c7785a6c5e4d2805d004f6ec1411a953ec9d68005314bc8fe52bf1deb5f6c036a73ea4a08cf3346a120f765971c4fbb0049bdc4ebf97c867bf7e14f7690b8
6
+ metadata.gz: bfe190ce26c9b3e65aea86f3d23e40a400c14edcac8c465b361341ac00a7ab7d59498c9c3edda92d7e180659cad96240148bce26dc3a1db77a92ee2e03575204
7
+ data.tar.gz: f1c0386fbb5346a74c3f9c0c3b6228a9af29a810241793a5f44db5cbe7d7873c24e9dda987b65aff0d4984193be3652bec472431a48407badb2eb7610da506d6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smart_todo (1.5.0)
4
+ smart_todo (1.6.0)
5
5
  rexml
6
6
 
7
7
  GEM
@@ -11,6 +11,11 @@ module SmartTodo
11
11
  # If the Pull Request or Issue is on a private repository, exporting a token
12
12
  # with the `repos` scope in the +SMART_TODO_GITHUB_TOKEN+ environment variable
13
13
  # is required.
14
+ #
15
+ # You can also set a per-org or per-repo token by exporting more specific environment variables:
16
+ # +SMART_TODO_GITHUB_TOKEN__<ORG>+ and +SMART_TODO_GITHUB_TOKEN__<ORG>__<REPO>+
17
+ # The +<ORG>+ and +<REPO>+ parts should be uppercased and use underscores.
18
+ # For example, +Shopify/my-repo+ would become +SMART_TODO_GITHUB_TOKEN__SHOPIFY__MY_REPO=...+.
14
19
  class IssueClose
15
20
  TOKEN_ENV = "SMART_TODO_GITHUB_TOKEN"
16
21
 
@@ -78,8 +83,30 @@ module SmartTodo
78
83
  # @return [Hash]
79
84
  def default_headers
80
85
  { "Accept" => "application/vnd.github.v3+json" }.tap do |headers|
81
- headers["Authorization"] = "token #{ENV[TOKEN_ENV]}" if ENV[TOKEN_ENV]
86
+ token = authorization_token
87
+ headers["Authorization"] = "token #{token}" if token
88
+ end
89
+ end
90
+
91
+ # @return [String, nil]
92
+ def authorization_token
93
+ # Will look in order for:
94
+ # SMART_TODO_GITHUB_TOKEN__ORG__REPO
95
+ # SMART_TODO_GITHUB_TOKEN__ORG
96
+ # SMART_TODO_GITHUB_TOKEN
97
+ parts = [
98
+ TOKEN_ENV,
99
+ @organization.upcase.gsub(/[^A-Z0-9]/, "_"),
100
+ @repo.upcase.gsub(/[^A-Z0-9]/, "_"),
101
+ ]
102
+
103
+ (parts.size - 1).downto(0).each do |i|
104
+ key = parts[0..i].join("__")
105
+ token = ENV[key]
106
+ return token unless token.nil? || token.empty?
82
107
  end
108
+
109
+ nil
83
110
  end
84
111
  end
85
112
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SmartTodo
4
+ module Events
5
+ # An event that checks the currently installed ruby version.
6
+ # @example
7
+ # RubyVersion.new(['>= 2.3', '< 3'])
8
+ class RubyVersion
9
+ def initialize(requirements)
10
+ @requirements = Gem::Requirement.new(requirements)
11
+ end
12
+
13
+ # @param requirements [Array<String>] a list of version specifiers
14
+ # @return [String, false]
15
+ def met?
16
+ if @requirements.satisfied_by?(Gem::Version.new(installed_ruby_version))
17
+ message(installed_ruby_version)
18
+ else
19
+ false
20
+ end
21
+ end
22
+
23
+ # @param installed_ruby_version [String], requirements [String]
24
+ # @return [String]
25
+ def message(installed_ruby_version)
26
+ "The currently installed version of Ruby #{installed_ruby_version} is #{@requirements}."
27
+ end
28
+
29
+ private
30
+
31
+ def installed_ruby_version
32
+ RUBY_VERSION
33
+ end
34
+ end
35
+ end
36
+ end
@@ -66,5 +66,13 @@ module SmartTodo
66
66
  def pull_request_close(organization, repo, pr_number)
67
67
  IssueClose.new(organization, repo, pr_number, type: "pulls").met?
68
68
  end
69
+
70
+ # Check if the installed ruby version meets requirements.
71
+ #
72
+ # @param requirements [Array<String>] a list of version specifiers
73
+ # @return [false, String]
74
+ def ruby_version(*requirements)
75
+ RubyVersion.new(requirements).met?
76
+ end
69
77
  end
70
78
  end
@@ -37,7 +37,7 @@ module SmartTodo
37
37
  # @param args [Array]
38
38
  # @return [Array, MethodNode]
39
39
  def on_method_add_arg(method, args)
40
- if method == "TODO"
40
+ if method.start_with?(/TODO\W?/)
41
41
  args
42
42
  else
43
43
  MethodNode.new(method, args)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SmartTodo
4
- VERSION = "1.5.0"
4
+ VERSION = "1.6.0"
5
5
  end
data/lib/smart_todo.rb CHANGED
@@ -18,6 +18,7 @@ module SmartTodo
18
18
  autoload :GemBump, "smart_todo/events/gem_bump"
19
19
  autoload :GemRelease, "smart_todo/events/gem_release"
20
20
  autoload :IssueClose, "smart_todo/events/issue_close"
21
+ autoload :RubyVersion, "smart_todo/events/ruby_version"
21
22
  end
22
23
 
23
24
  module Dispatchers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_todo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-13 00:00:00.000000000 Z
11
+ date: 2023-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rexml
@@ -118,6 +118,7 @@ files:
118
118
  - lib/smart_todo/events/gem_bump.rb
119
119
  - lib/smart_todo/events/gem_release.rb
120
120
  - lib/smart_todo/events/issue_close.rb
121
+ - lib/smart_todo/events/ruby_version.rb
121
122
  - lib/smart_todo/parser/comment_parser.rb
122
123
  - lib/smart_todo/parser/metadata_parser.rb
123
124
  - lib/smart_todo/parser/todo_node.rb
@@ -150,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
151
  - !ruby/object:Gem::Version
151
152
  version: '0'
152
153
  requirements: []
153
- rubygems_version: 3.4.13
154
+ rubygems_version: 3.4.16
154
155
  signing_key:
155
156
  specification_version: 4
156
157
  summary: Enhance todo's comments in your codebase.