gitlab-triage 0.0.2 → 0.0.3

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: 7ad8914af4bb7b033c4940c70d78c34c23853ad282f959dbbdc24e2a8e11f1bb
4
- data.tar.gz: f7e5433d13aba0bd5e2af4bf82c5249e236ef068e976686e6816185f4fc8fdc8
3
+ metadata.gz: 07c73a42510a969fbfbd9d37b8c0cf3aa5b7194f411845ffa85df71bdd17e014
4
+ data.tar.gz: 92c16e24e3b60a68cbda012ca44cbef9e20e3d8143425ef6506db0817ee2e80d
5
5
  SHA512:
6
- metadata.gz: bdd2ef81bc67e09545caead3efa38555dd14c289185de6dab6415758f3a83a03712d3fbee0d09bfebafffe0e38e66555c0956720a21f1bf8f4b5a26699c098f4
7
- data.tar.gz: 4886edce0d466c412b9bfd4b60d14654b5069700ff564ecd293ccd10a77278c4092cf0a4207b20e97dbdaadffa7dd2b44e4a5efb44f8d529c23b25d67bf32f50
6
+ metadata.gz: e078932be7f117f6f6c4ad1bed68b8fb217dec19ffb60d0010507f009cdaeb1c21e718d729795317eaae4c91c30ddaed6acf16c0f75c03859516e23893af7d6f
7
+ data.tar.gz: c228d7ae359adcc1b4d1f8b9e058242a28f8c7c7f9500e7670c1ee9808d6098e7424c266188d3ebb0c9bd7c4bbe7354ff9dd1feac8a31167d54a28b14014106e
data/.gitlab-ci.yml CHANGED
@@ -3,7 +3,7 @@ image: ruby:2.4
3
3
  stages:
4
4
  - prepare
5
5
  - test
6
- - process_rules
6
+ - triage
7
7
 
8
8
  .default-cache-config: &default-cache-config
9
9
  key: "ruby-2.4"
@@ -21,6 +21,9 @@ before_script:
21
21
  - bundle --version
22
22
  - bundle install --jobs $(nproc) --retry 3 --quiet
23
23
 
24
+ ###################
25
+ ## Prepare stage ##
26
+ ###################
24
27
  setup-test-env:
25
28
  stage: prepare
26
29
  script:
@@ -31,31 +34,37 @@ setup-test-env:
31
34
  paths:
32
35
  - vendor/cache/
33
36
  - Gemfile.lock
37
+ except:
38
+ - schedules
34
39
 
40
+ ################
41
+ ## Test stage ##
42
+ ################
35
43
  styles:
44
+ <<: *pull-cache
36
45
  stage: test
37
46
  script:
38
47
  - bundle exec rubocop
39
48
  except:
40
49
  - schedules
41
- <<: *pull-cache
42
50
 
43
51
  specs:
52
+ <<: *pull-cache
44
53
  stage: test
45
54
  script:
46
55
  - bundle exec rake spec
47
- <<: *pull-cache
48
56
 
49
57
  build:
58
+ <<: *pull-cache
50
59
  stage: test
51
60
  script:
52
61
  - bundle exec rake build
53
62
  - bundle exec rake clobber
54
63
  except:
55
64
  - schedules
56
- <<: *pull-cache
57
65
 
58
66
  codequality:
67
+ <<: *pull-cache
59
68
  image: docker:latest
60
69
  stage: test
61
70
  variables:
@@ -76,26 +85,54 @@ codequality:
76
85
  paths:
77
86
  - codeclimate.json
78
87
  except:
79
- - schedules
80
- <<: *pull-cache
88
+ - schedules
81
89
 
82
- dry-run:triage:
83
- stage: test
84
- script:
85
- - bundle exec bin/gitlab-triage --dry-run --token $API_TOKEN --policies-file policies.yml --project-id gitlab-org/triage
90
+ ##################
91
+ ## Triage stage ##
92
+ ##################
93
+ dry-run:bin:gitlab-org/triage:
86
94
  <<: *pull-cache
95
+ stage: triage
96
+ script:
97
+ - bundle exec bin/gitlab-triage --dry-run --token $API_TOKEN --project-id gitlab-org/triage
98
+ except:
99
+ - schedules
87
100
 
88
- dry-run:gilab-ce:
89
- stage: process_rules
101
+ dry-run:bin:gitlab-org/gitlab-ce:
102
+ <<: *pull-cache
103
+ stage: triage
90
104
  script:
91
- - bundle exec bin/gitlab-triage --dry-run --token $API_TOKEN --policies-file policies.yml --project-id gitlab-org/gitlab-ce
105
+ - bundle exec bin/gitlab-triage --dry-run --token $API_TOKEN --project-id gitlab-org/gitlab-ce
92
106
  when: manual
107
+ except:
108
+ - schedules
109
+
110
+ dry-run:gem:gitlab-org/triage:
93
111
  <<: *pull-cache
112
+ stage: triage
113
+ script:
114
+ - gem install gitlab-triage
115
+ - gitlab-triage --help
116
+ - gitlab-triage --dry-run --token $API_TOKEN --project-id gitlab-org/triage
117
+ when: manual
118
+ except:
119
+ - schedules
94
120
 
95
- results:
96
- stage: process_rules
121
+ ###############
122
+ ## Schedules ##
123
+ ###############
124
+ run:triage:gitlab-ce:
125
+ stage: triage
97
126
  script:
98
- - bundle exec bin/gitlab-triage --token $API_TOKEN --policies-file policies.yml --project-id gitlab-org/gitlab-ce
127
+ - gem install gitlab-triage
128
+ - gitlab-triage --token $API_TOKEN --project-id gitlab-org/gitlab-ce
129
+ only:
130
+ - schedules
131
+
132
+ run:triage:triage:
133
+ stage: triage
134
+ script:
135
+ - gem install gitlab-triage
136
+ - gitlab-triage --token $API_TOKEN --project-id gitlab-org/triage
99
137
  only:
100
138
  - schedules
101
- <<: *pull-cache
@@ -1,7 +1,3 @@
1
- host_url: https://gitlab.com
2
- api_version: v4
3
- project_id: 13083
4
- per_page: 100
5
1
  resource_rules:
6
2
  issues:
7
3
  rules:
@@ -8,6 +8,7 @@ require_relative 'command_builders/cc_command_builder'
8
8
  require_relative 'command_builders/status_command_builder'
9
9
  require_relative 'filter_builders/single_filter_builder'
10
10
  require_relative 'filter_builders/multi_filter_builder'
11
+ require_relative 'url_builders/url_builder'
11
12
  require_relative 'network'
12
13
  require_relative 'network_adapters/httparty_adapter'
13
14
  require_relative 'ui'
@@ -123,12 +124,27 @@ module Gitlab
123
124
  def build_get_url(resource_type, conditions)
124
125
  # Example issues query with state and labels
125
126
  # https://gitlab.com/api/v4/projects/test-triage%2Fissue-project/issues?state=open&labels=project%20label%20with%20spaces,group_label_no_spaces
126
- query_base = ["#{host_url}/api/#{api_version}/projects/#{CGI.escape(options.project_id.to_s)}/#{resource_type}/?per_page=#{per_page}"]
127
- query_base << FilterBuilders::MultiFilterBuilder.new('labels', conditions[:labels], ',').build_filter if conditions[:labels]
128
- query_base << FilterBuilders::SingleFilterBuilder.new('state', conditions[:state]).build_filter if conditions[:state]
129
- query_base << FilterBuilders::MultiFilterBuilder.new('milestone', conditions[:milestone], ',').build_filter if conditions[:milestone]
127
+ params = {
128
+ per_page: per_page
129
+ }
130
+
131
+ condition_builders = []
132
+ condition_builders << FilterBuilders::MultiFilterBuilder.new('labels', conditions[:labels], ',') if conditions[:labels]
133
+ condition_builders << FilterBuilders::SingleFilterBuilder.new('state', conditions[:state]) if conditions[:state]
134
+ condition_builders << FilterBuilders::MultiFilterBuilder.new('milestone', conditions[:milestone], ',') if conditions[:milestone]
135
+
136
+ condition_builders.each do |condition_builder|
137
+ params[condition_builder.filter_name] = condition_builder.filter_content
138
+ end
139
+
140
+ get_url = UrlBuilders::UrlBuilder.new(
141
+ host_url: host_url,
142
+ api_version: api_version,
143
+ project_id: options.project_id,
144
+ resource_type: resource_type,
145
+ params: params
146
+ ).build
130
147
 
131
- get_url = query_base.join
132
148
  puts Gitlab::Triage::UI.debug "get_url: #{get_url}" if options.debug
133
149
 
134
150
  get_url
@@ -136,7 +152,15 @@ module Gitlab
136
152
 
137
153
  def build_post_url(resource_type, resource)
138
154
  # POST /projects/:id/issues/:issue_iid/notes
139
- post_url = "#{host_url}/api/#{api_version}/projects/#{options.project_id}/#{resource_type}/#{resource['iid']}/notes/"
155
+ post_url = UrlBuilders::UrlBuilder.new(
156
+ host_url: host_url,
157
+ api_version: api_version,
158
+ project_id: options.project_id,
159
+ resource_type: resource_type,
160
+ resource_id: resource['iid'],
161
+ sub_resource_type: 'notes'
162
+ ).build
163
+
140
164
  puts Gitlab::Triage::UI.debug "post_url: #{post_url}" if options.debug
141
165
 
142
166
  post_url
@@ -0,0 +1,41 @@
1
+ module Gitlab
2
+ module Triage
3
+ module UrlBuilders
4
+ class UrlBuilder
5
+ def initialize(options)
6
+ @host_url = options.fetch(:host_url)
7
+ @api_version = options.fetch(:api_version)
8
+ @project_id = options.fetch(:project_id)
9
+ @resource_type = options.fetch(:resource_type)
10
+ @sub_resource_type = options.fetch(:sub_resource_type, nil)
11
+ @resource_id = options.fetch(:resource_id, nil)
12
+ @params = options.fetch(:params, [])
13
+ end
14
+
15
+ def build
16
+ base_url.tap do |url|
17
+ url << "/#{@resource_id}" if @resource_id
18
+ url << "/#{@sub_resource_type}" if @sub_resource_type
19
+ url << params_string if @params
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def host_with_api_url
26
+ "#{@host_url}/api/#{@api_version}"
27
+ end
28
+
29
+ def base_url
30
+ "#{host_with_api_url}/projects/#{CGI.escape(@project_id.to_s)}/#{@resource_type}"
31
+ end
32
+
33
+ def params_string
34
+ "?" << @params.map do |k, v|
35
+ "#{k}=#{v}"
36
+ end.join("&")
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module Triage
3
- VERSION = '0.0.2'.freeze
3
+ VERSION = '0.0.3'.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.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-08 00:00:00.000000000 Z
11
+ date: 2017-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -107,6 +107,7 @@ files:
107
107
  - ".gitlab-ci.yml"
108
108
  - ".gitlab/issue_templates/Policy.md"
109
109
  - ".rubocop.yml"
110
+ - ".triage-policies.yml"
110
111
  - Gemfile
111
112
  - Guardfile
112
113
  - README.md
@@ -132,8 +133,8 @@ files:
132
133
  - lib/gitlab/triage/network_adapters/test_adapter.rb
133
134
  - lib/gitlab/triage/retryable.rb
134
135
  - lib/gitlab/triage/ui.rb
136
+ - lib/gitlab/triage/url_builders/url_builder.rb
135
137
  - lib/gitlab/triage/version.rb
136
- - policies.yml
137
138
  homepage: https://gitlab.com/gitlab-org/triage
138
139
  licenses:
139
140
  - MIT