gitlab-triage 1.25.0 → 1.27.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: 42c73b8dcb5e94e895ba0daa399105f8111584523001f233a3b5344dd52e8d13
4
- data.tar.gz: 0f9c38c9aa9de8c6210cca84d6224af7647bfeec4c7fa8a73562cb4e035205e9
3
+ metadata.gz: 6668ca8a79611f5e39d317807cb604d7fb32320120283c9996a9784515523bf5
4
+ data.tar.gz: d6211b78036d039e89a75da4f93bbfa07c44b73ffd16f331ae1bfb5cc901cc9d
5
5
  SHA512:
6
- metadata.gz: 264e37c9838cff91100494a72a791828e555afcac5e028a83cd0de7b86c19f9d206d1ffe0486983cd990cd51686719c660b7b04f530bd633118bc85f734a9960
7
- data.tar.gz: dd4e5b974bdf3496ee8a40eca9d69d17a3882cf40e6ac24fb8b452c500ad2fe17c8a40bd32ff1a97ad5639f7837cbdc24c993ea96d264a07a2a58985af6744b8
6
+ metadata.gz: bf0a6406e2a2b6f6cc6b7436831b3b95be04bbf1174c70d3fc5d4a0e24d4e8ccddcd1837864bc8e336fb1c5a0dc947c8a37716d74b31f35e025c4a21bcdb2fda
7
+ data.tar.gz: 0aa64137299f30fe4f83db4b50475c2b9a15e9730eebbcf5b98d5ce17150a70379f5ae629a87b5d399ce4c74a1712063e222c224ef2e6da29d3016ca48faa35f
data/.gitlab-ci.yml CHANGED
@@ -126,7 +126,7 @@ dry-run:gitlab-triage:
126
126
  - gitlab-triage --version
127
127
  - gitlab-triage --help
128
128
  - gitlab-triage --init
129
- - gitlab-triage --dry-run --debug --token $GITLAB_API_TOKEN --source-id $CI_PROJECT_PATH
129
+ - gitlab-triage --dry-run --debug --source-id $CI_PROJECT_PATH
130
130
 
131
131
  # This job requires allows to override the `CI_PROJECT_PATH` variable when triggered.
132
132
  dry-run:custom:
data/README.md CHANGED
@@ -169,7 +169,7 @@ Available condition types:
169
169
  - [`milestone` condition](#milestone-condition)
170
170
  - [`iteration` condition](#iteration-condition)
171
171
  - [`state` condition](#state-condition)
172
- - [`upvotes` condition](#upvotes-condition)
172
+ - [`votes` condition](#votes-condition)
173
173
  - [`labels` condition](#labels-condition)
174
174
  - [`forbidden_labels` condition](#forbidden-labels-condition)
175
175
  - [`no_additional_labels` condition](#no-additional-labels-condition)
@@ -182,6 +182,7 @@ Available condition types:
182
182
  - [`discussions` condition](#discussions-condition)
183
183
  - [`protected` condition](#protected-condition)
184
184
  - [`ruby` condition](#ruby-condition)
185
+ - [`reviewer_id` condition](#reviewer-id-condition)
185
186
 
186
187
  ##### Date condition
187
188
 
@@ -264,7 +265,7 @@ conditions:
264
265
  state: opened
265
266
  ```
266
267
 
267
- ##### Upvotes condition
268
+ ##### Votes condition
268
269
 
269
270
  Accepts a hash of fields.
270
271
 
@@ -278,7 +279,7 @@ Example:
278
279
 
279
280
  ```yml
280
281
  conditions:
281
- upvotes:
282
+ votes:
282
283
  attribute: upvotes
283
284
  condition: less_than
284
285
  threshold: 10
@@ -670,6 +671,19 @@ limits:
670
671
  most_recent: 50
671
672
  ```
672
673
 
674
+ ##### Reviewer id condition
675
+
676
+ **This condition is only applicable for merge requests.**
677
+
678
+ Accepts the id of a user to filter on. Also accepts `none` or `any`.
679
+
680
+ Example:
681
+
682
+ ```yml
683
+ conditions:
684
+ reviewer_id: any
685
+ ```
686
+
673
687
  #### Actions field
674
688
 
675
689
  Used to declare an action to be carried out on a resource if **all** conditions are satisfied.
@@ -1195,6 +1209,7 @@ Here's a list of currently available Ruby expression API:
1195
1209
  | related_merge_requests | [MergeRequest] | The list of merge requests related to the issue |
1196
1210
  | closed_by | [MergeRequest] | The list of merge requests that close the issue |
1197
1211
  | linked_issues | [LinkedIssue] | The list of issues that are linked to the issue |
1212
+ | due_date | Date | The due date of the issue. Could be `nil` |
1198
1213
 
1199
1214
  ##### Methods for `LinkedIssue`
1200
1215
 
@@ -1406,4 +1421,13 @@ Please refer to the [Contributing Guide](CONTRIBUTING.md).
1406
1421
 
1407
1422
  ## Release Process
1408
1423
 
1409
- Please refer to the [Release Process](docs/release_process.md).
1424
+ We release `gitlab-triage` on an ad-hoc basis. There is no regularity to when
1425
+ we release, we just release when we make a change - no matter the size of the
1426
+ change.
1427
+
1428
+ To release a new version:
1429
+
1430
+ 1. Create a Merge Request.
1431
+ 1. Use Merge Request template [Release.md](https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage/-/blob/master/.gitlab/merge_request_templates/Release.md).
1432
+ 1. Follow the instructions.
1433
+ 1. After the Merge Request has been merged, a new gem version is [published automatically](https://gitlab.com/gitlab-org/quality/pipeline-common/-/blob/master/ci/gem-release.yml)
@@ -57,7 +57,6 @@ module Gitlab
57
57
 
58
58
  assert_all!
59
59
  assert_project_id!
60
- assert_token!
61
60
  require_ruby_files
62
61
  end
63
62
 
@@ -101,12 +100,6 @@ module Gitlab
101
100
  raise ArgumentError, 'A project_id is needed (pass it with the `--source-id` option)!'
102
101
  end
103
102
 
104
- def assert_token!
105
- return if options.token
106
-
107
- raise ArgumentError, 'A token is needed (pass it with the `--token` option)!'
108
- end
109
-
110
103
  def assert_all!
111
104
  raise ArgumentError, '--all-projects option cannot be used in conjunction with --source and --source-id option!' if
112
105
  options.all && (options.source || options.source_id)
@@ -335,7 +328,7 @@ module Gitlab
335
328
  puts
336
329
  end
337
330
 
338
- def filter_resources(resources, conditions)
331
+ def filter_resources(resources, conditions) # rubocop:disable Metrics/CyclomaticComplexity
339
332
  resources.select do |resource|
340
333
  results = []
341
334
 
@@ -353,8 +346,9 @@ module Gitlab
353
346
  results << Filters::BranchProtectedFilter.new(resource, conditions[:protected]).calculate
354
347
  end
355
348
 
356
- if conditions[:upvotes]
357
- results << Filters::VotesConditionsFilter.new(resource, conditions[:upvotes]).calculate
349
+ votes_condition = conditions[:votes] || conditions[:upvotes]
350
+ if votes_condition
351
+ results << Filters::VotesConditionsFilter.new(resource, votes_condition).calculate
358
352
  end
359
353
 
360
354
  if conditions[:no_additional_labels]
@@ -475,8 +469,13 @@ module Gitlab
475
469
 
476
470
  def merge_requests_resource_query(conditions)
477
471
  [].tap do |condition_builders|
478
- condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('source_branch', conditions[:source_branch]) if conditions[:source_branch]
479
- condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new('target_branch', conditions[:target_branch]) if conditions[:target_branch]
472
+ [
473
+ :source_branch,
474
+ :target_branch,
475
+ :reviewer_id
476
+ ].each do |key|
477
+ condition_builders << APIQueryBuilders::SingleQueryParamBuilder.new(key.to_s, conditions[key]) if conditions[key]
478
+ end
480
479
  condition_builders << draft_condition_builder(conditions[:draft]) if conditions.key?(:draft)
481
480
  end
482
481
  end
@@ -54,6 +54,10 @@ module Gitlab
54
54
  }
55
55
  GRAPHQL
56
56
 
57
+ def vote_attribute
58
+ @vote_attribute ||= (conditions.dig(:votes, :attribute) || conditions.dig(:upvotes, :attribute)).to_s
59
+ end
60
+
57
61
  def resource_fields
58
62
  fields = []
59
63
 
@@ -64,8 +68,8 @@ module Gitlab
64
68
  fields << 'labels { nodes { title } }'
65
69
  fields << 'author { id name username }'
66
70
  fields << 'assignees { nodes { id name username } }' if conditions.key?(:assignee_member)
67
- fields << 'upvotes' if conditions.dig(:upvotes, :attribute).to_s == 'upvotes'
68
- fields << 'downvotes' if conditions.dig(:upvotes, :attribute).to_s == 'downvotes'
71
+ fields << 'upvotes' if vote_attribute == 'upvotes'
72
+ fields << 'downvotes' if vote_attribute == 'downvotes'
69
73
  fields.push('draft', 'mergedAt') if resource_type == 'merge_requests'
70
74
  end
71
75
 
@@ -8,6 +8,7 @@ module Gitlab
8
8
  module Triage
9
9
  class OptionParser
10
10
  class << self
11
+ # rubocop:disable Metrics/AbcSize
11
12
  def parse(argv)
12
13
  options = Options.new
13
14
  options.host_url = 'https://gitlab.com'
@@ -89,9 +90,11 @@ module Gitlab
89
90
  parser.parse!(argv)
90
91
 
91
92
  options.source = nil if options.all
93
+ options.token ||= ''
92
94
 
93
95
  options
94
96
  end
97
+ # rubocop:enable Metrics/AbcSize
95
98
  end
96
99
  end
97
100
  end
@@ -9,6 +9,18 @@ module Gitlab
9
9
  class Issue < Base
10
10
  include Shared::Issuable
11
11
 
12
+ DATE_FIELDS = %i[
13
+ due_date
14
+ ].freeze
15
+
16
+ DATE_FIELDS.each do |field|
17
+ define_field(field) do
18
+ value = resource[field]
19
+
20
+ Date.parse(value) if value
21
+ end
22
+ end
23
+
12
24
  def merge_requests_count
13
25
  @merge_requests_count ||= resource.dig(:merge_requests_count)
14
26
  end
@@ -30,6 +42,10 @@ module Gitlab
30
42
  resource_url(sub_resource_type: 'links'))
31
43
  .map { |issue| LinkedIssue.new(issue, parent: self) }
32
44
  end
45
+
46
+ def expired?(today = Date.today)
47
+ due_date && due_date < today
48
+ end
33
49
  end
34
50
  end
35
51
  end
@@ -10,7 +10,6 @@ module Gitlab
10
10
  class RestAPINetwork
11
11
  include Retryable
12
12
 
13
- TokenNotFound = Class.new(StandardError)
14
13
  MINIMUM_RATE_LIMIT = 25
15
14
 
16
15
  attr_reader :options, :adapter
@@ -103,7 +102,7 @@ module Gitlab
103
102
  private
104
103
 
105
104
  def token
106
- options.token || raise(TokenNotFound)
105
+ options.token
107
106
  end
108
107
 
109
108
  def rate_limit_debug(response)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module Triage
5
- VERSION = '1.25.0'
5
+ VERSION = '1.27.0'
6
6
  end
7
7
  end
@@ -1,4 +1,4 @@
1
- image: ruby:2.4
1
+ image: ruby:2.7
2
2
 
3
3
  stages:
4
4
  - triage
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-triage
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.0
4
+ version: 1.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-05 00:00:00.000000000 Z
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport