gitlab-triage 0.0.2 → 0.0.3

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: 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