smart_todo 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/lib/smart_todo.rb +1 -0
- data/lib/smart_todo/events.rb +9 -0
- data/lib/smart_todo/events/gem_bump.rb +57 -0
- data/lib/smart_todo/parser/metadata_parser.rb +2 -0
- data/lib/smart_todo/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f43df881f5ab5894069683abbe3d09571232a896a429d0d2795d57e8102e42dc
|
4
|
+
data.tar.gz: 070dc363e6e1aa44e605e1fe53126bfc613af23985cfc7cdb48a145fe93362e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69d9f4f170b854769a3141a41135c25463b2839274be7a6cea062b2d524fa5cee37e64c0a134f9de10944b9fce9e3580ed8f3b5ca4c8a8101528c3f9691a1c36
|
7
|
+
data.tar.gz: c5b66f439a2176728ca2f8ef4297fceeaa6d9f08c1ba190d4a255b8e3164264262536681d34a9cab4a9837c2455e75ecdf1dd9dc6b7b8b9877e37ef026719c01
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.2.0] - 2019-11-25
|
10
|
+
### Fixed
|
11
|
+
- Fixed crash with badly formated TODO(on:) (i.e. `TODO(on: 'blabla'))
|
12
|
+
|
13
|
+
### Added
|
14
|
+
- Added the `on: gem_bump` event which will remind you when a gem inside your
|
15
|
+
Gemfile.lock snapshot gets updated to a specific version.
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
# TODO(on: gem_bump('rails', '6.1'), to: '...')
|
19
|
+
```
|
20
|
+
|
9
21
|
## [1.1.0] - 2019-09-06
|
10
22
|
### Fixed
|
11
23
|
- Fixed the SmartTodo cop to add an offense in case a SmartTodo has a wrong event.
|
data/Gemfile.lock
CHANGED
data/lib/smart_todo.rb
CHANGED
data/lib/smart_todo/events.rb
CHANGED
@@ -38,6 +38,15 @@ module SmartTodo
|
|
38
38
|
GemRelease.new(gem_name, requirements).met?
|
39
39
|
end
|
40
40
|
|
41
|
+
# Check if +gem_name+ was bumped to the +requirements+ expected
|
42
|
+
#
|
43
|
+
# @param gem_name [String]
|
44
|
+
# @param requirements [Array<String>] a list of version specifiers
|
45
|
+
# @return [false, String]
|
46
|
+
def gem_bump(gem_name, *requirements)
|
47
|
+
GemBump.new(gem_name, requirements).met?
|
48
|
+
end
|
49
|
+
|
41
50
|
# Check if the issue +issue_number+ is closed
|
42
51
|
#
|
43
52
|
# @param organization [String] the GitHub organization name
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
gem('bundler')
|
4
|
+
require 'bundler'
|
5
|
+
|
6
|
+
module SmartTodo
|
7
|
+
module Events
|
8
|
+
# An event that compare the version of a gem specified in your Gemfile.lock
|
9
|
+
# with the expected version specifiers.
|
10
|
+
class GemBump
|
11
|
+
# @param gem_name [String]
|
12
|
+
# @param requirements [Array] a list of version specifiers.
|
13
|
+
# The specifiers are the same as the one used in Gemfiles or Gemspecs
|
14
|
+
#
|
15
|
+
# @example Expecting a specific version
|
16
|
+
# GemBump.new('rails', ['6.0'])
|
17
|
+
#
|
18
|
+
# @example Expecting a version in the 5.x.x series
|
19
|
+
# GemBump.new('rails', ['> 5.2', '< 6'])
|
20
|
+
def initialize(gem_name, requirements)
|
21
|
+
@gem_name = gem_name
|
22
|
+
@requirements = Gem::Requirement.new(requirements)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [String, false]
|
26
|
+
def met?
|
27
|
+
return error_message if spec_set[@gem_name].empty?
|
28
|
+
|
29
|
+
installed_version = spec_set[@gem_name].first.version
|
30
|
+
if @requirements.satisfied_by?(installed_version)
|
31
|
+
message(installed_version)
|
32
|
+
else
|
33
|
+
false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Error message send to Slack in case a gem couldn't be found
|
38
|
+
#
|
39
|
+
# @return [String]
|
40
|
+
def error_message
|
41
|
+
"The gem *#{@gem_name}* is not in your dependencies, I can't determine if your TODO is ready to be addressed."
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [String]
|
45
|
+
def message(version_number)
|
46
|
+
"The gem *#{@gem_name}* was updated to version *#{version_number}* and your TODO is now ready to be addressed."
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
# @return [Bundler::SpecSet] an instance of Bundler::SpecSet
|
52
|
+
def spec_set
|
53
|
+
@spec_set ||= Bundler.load.specs
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/smart_todo/version.rb
CHANGED
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.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/smart_todo/dispatchers/slack.rb
|
115
115
|
- lib/smart_todo/events.rb
|
116
116
|
- lib/smart_todo/events/date.rb
|
117
|
+
- lib/smart_todo/events/gem_bump.rb
|
117
118
|
- lib/smart_todo/events/gem_release.rb
|
118
119
|
- lib/smart_todo/events/issue_close.rb
|
119
120
|
- lib/smart_todo/parser/comment_parser.rb
|