gitlab-triage 0.16.0 → 0.17.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: 151d7ca8651d7f913171ef8fe50a1128d2101df9286d88cffe57cbc20d50f254
4
- data.tar.gz: 81a9fab0da6480444ad0498a361c364efac00c63c3db56b3d26b433a6f83f388
3
+ metadata.gz: 50e7ccde3708d94fd7af8e08648c66c808efc29d65af9ef1daed5b2d93e8d186
4
+ data.tar.gz: 6d56190f6a55e5458a8a2a0dde2cd6d148c8cadc7b3171323c1f06c3165b38bf
5
5
  SHA512:
6
- metadata.gz: fa57bcfddb6a36c963cd1bd80903deef7c03d82bc77e259d5d71d9edc01dcf9b7786d0b88b79110273c7167fc6b74339da904470c79d648b8ed50ebd1b2ceb88
7
- data.tar.gz: 92929ba6651a46241581dac4d3a3ec902e959ecea660b51cb7a861dba32f9418a760d9bcaaedf645439e39e6bdd5462880d9b1c635a90d3a9cf6499d372d43e8
6
+ metadata.gz: e3e8a45c76ec475486acfc23f555b3c71e90086fa0424efc36411de1caa32fee9471a2f2a751eac0a834a0a320e5293582e4b9011d39e09d0e40925ba1f64da1
7
+ data.tar.gz: ffc308fedc4e4d1f64ab028ef25ec46e4382990d601ff78137cbbc5d613bf3b8b5a299d8a2a31d32e09e9003ff6033eba6f464de0cd0b21d2df1db8b6cbf2a5d
data/README.md CHANGED
@@ -636,6 +636,9 @@ Placeholders work regularly for `item`, but for `summary` only
636
636
  `{{title}}`, `{{items}}`, `{{type}}` are supported because it's not tied to a
637
637
  particular resource like the comment action.
638
638
 
639
+ **Note:**: No issues will be created if the specific policy doesn't yield
640
+ any resources.
641
+
639
642
  **Note:**: `redact_confidential_resources` defaults to `true`, so fields on
640
643
  confidential resources will be converted to `(confidential)` except for
641
644
  `{{web_url}}`. Setting it to `false` will reveal the confidential fields.
@@ -774,6 +777,10 @@ Which could generate an issue like:
774
777
  /label ~"needs attention"
775
778
  ```
776
779
 
780
+ **Note:**: If a specific policy doesn't yield any resources, it will not generate
781
+ the corresponding description. If all policies yield no resources, then
782
+ no issues will be created.
783
+
777
784
  ### Ruby expression API
778
785
 
779
786
  Here's a list of currently available Ruby expression API:
@@ -19,7 +19,7 @@ module Gitlab
19
19
  end
20
20
 
21
21
  def act
22
- perform if policy.resources.any? && issue.valid?
22
+ perform if issue.valid?
23
23
  end
24
24
 
25
25
  private
@@ -6,9 +6,7 @@ module Gitlab
6
6
  module Triage
7
7
  module EntityBuilders
8
8
  class IssueBuilder
9
- attr_writer :description, :items
10
-
11
- def initialize(type:, action:, resources:, network:)
9
+ def initialize(type:, action:, resources:, network:, separator: "\n")
12
10
  @type = type
13
11
  @item_template = action[:item]
14
12
  @title_template = action[:title]
@@ -17,6 +15,7 @@ module Gitlab
17
15
  action[:redact_confidential_resources] != false
18
16
  @resources = resources
19
17
  @network = network
18
+ @separator = separator
20
19
  end
21
20
 
22
21
  def title
@@ -28,7 +27,11 @@ module Gitlab
28
27
  end
29
28
 
30
29
  def valid?
31
- title =~ /\S+/
30
+ title =~ /\S+/ && any_resources?
31
+ end
32
+
33
+ def any_resources?
34
+ @resources.any?
32
35
  end
33
36
 
34
37
  private
@@ -42,11 +45,16 @@ module Gitlab
42
45
  end
43
46
 
44
47
  def items
45
- @items ||= @resources.map(&method(:build_item)).join("\n")
48
+ @items ||= @resources.map(&method(:build_item)).join(@separator)
46
49
  end
47
50
 
48
51
  def build_item(resource)
49
- build_text(resource, @item_template)
52
+ case resource
53
+ when IssueBuilder
54
+ resource.description
55
+ else
56
+ build_text(resource, @item_template)
57
+ end
50
58
  end
51
59
 
52
60
  def build_text(resource, template)
@@ -12,19 +12,19 @@ module Gitlab
12
12
  def build_issue
13
13
  action = actions[:summarize]
14
14
 
15
+ issues =
16
+ resources.map do |inner_policy_spec, inner_resources|
17
+ Policies::RulePolicy.new(
18
+ type, inner_policy_spec, inner_resources, network)
19
+ .build_issue
20
+ end
21
+
15
22
  EntityBuilders::IssueBuilder.new(
16
23
  type: type,
17
24
  action: action,
18
- resources: [],
19
- network: network).tap do |issue|
20
- issue.items =
21
- resources.map do |inner_policy_spec, inner_resources|
22
- Policies::RulePolicy.new(
23
- type, inner_policy_spec, inner_resources, network)
24
- .build_issue
25
- .description
26
- end.join("\n\n")
27
- end
25
+ resources: issues.select(&:any_resources?),
26
+ network: network,
27
+ separator: "\n\n")
28
28
  end
29
29
 
30
30
  # Due to resources is a different type, this will never work
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Triage
3
- VERSION = '0.16.0'.freeze
3
+ VERSION = '0.17.0'.freeze
4
4
  end
5
5
  end
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: 0.16.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-27 00:00:00.000000000 Z
11
+ date: 2019-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -208,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  requirements: []
211
- rubygems_version: 3.0.2
211
+ rubygems_version: 3.0.3
212
212
  signing_key:
213
213
  specification_version: 4
214
214
  summary: GitLab triage automation project.