gerrit2jiracomment 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bae95b41f97ca719c6fa6f50418e4e9392e2834b4b1c99a8a57161b4c569210f
4
+ data.tar.gz: 72a90d57cb1f7ff33e6014ad0026bbbeba2cf4d26a14acddee7c4bc422b1386a
5
+ SHA512:
6
+ metadata.gz: 7c91d240266ef60780260d6a4fdbeee7cd85db4c108ab5c1c2fe27049936d44a66c003f88d2e3f3048f0a924a120e89f9814701ef062e65ddebeac9a301da7bf
7
+ data.tar.gz: 0777b77ec37effe3b522cfaf1981927851dd3497a4d5c990db757356fee6b69ba03207bb795543754961c5275ba9fda8a209e9c5d0e20c281d5949e5fffcc158
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+ /settings.yaml
13
+ *.gpg
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ Metrics/BlockLength:
4
+ ExcludedMethods: ['describe']
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ gerrit2jiracomment
data/.ruby-version ADDED
@@ -0,0 +1,2 @@
1
+ 2.5.0
2
+
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.5.0
4
+ sudo: false
5
+ before_install:
6
+ - gem install bundler -v 1.16.1
7
+ before_script:
8
+ - bundle install
9
+ script:
10
+ - bundle exec rake spec build
11
+ deploy:
12
+ provider: rubygems
13
+ skip_cleanup: true
14
+ api_key:
15
+ secure: 5gAc1r58UKCjXVNCHYse1GiWM3tPMo0IHuiOA6A/C1rGzVRmimu1i4Q1JQyeViwIrGj1XP4hK1iCBcoFWJe/wY3FVI9UThA4Y76o4aqRRqxbxzFwnK7iRXb50STllMA78UnDQggKWhm0k6EDtkLYl9wIfeTG7Wcx/rr6kGYiROTsiqXKPy+KVFGAF0NtJvehAXxJu4zrLN5bcEPGCFQijd7rEjgwShsRwPs2k8BHmOTnqDIKLqAnRdzcoX4sNR1P3gggvDnJ4+cAqOGv6v3EWHaAMJEI4DE1sDNeRf8lY2OSGS7LZaFtcth6+k3W3rCiDgiJ7CIcPXxWat/IGC8kwV89jhRB8dZ12G5pBWfoiM23Zm7EZ2JEz8fH2dpqbznIEJblo2HbArCZyY0K/cdMfxHNTDPh856Oh0dX2iOdCL+PhgCMjmWWPJDphR06zVmfCxDrDo3zHzzG1EOQDAIE8BNDp1JvkadpuoxCUTL5T0Hyq1E/VJiMJtCmIQWssXn2e0oNK3qeiplMsPmhLNp+fmcqY3kH3P8uYlEedeJaaBMkBRj/vWC0xrajupllbPsVhj0RVD3joP+VrUbjvweagRN6UYR6v8NDgAVxXuSn1FPxFR3g6rQOZRQF1fEx+SqEcbIzQFdDG6Lym/TWJqzVu2dVZfikjw5Df0YOLhXXgXA=
16
+ # on:
17
+ # tags: true
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ # Specify your gem's dependencies in gerrit2jiracomment.gemspec
8
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,75 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gerrit2jiracomment (0.2.2)
5
+ byebug
6
+ jira-ruby
7
+ rx
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activesupport (5.1.4)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (~> 0.7)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+ ast (2.3.0)
18
+ byebug (10.0.0)
19
+ concurrent-ruby (1.0.5)
20
+ diff-lcs (1.3)
21
+ i18n (0.9.3)
22
+ concurrent-ruby (~> 1.0)
23
+ jira-ruby (1.5.0)
24
+ activesupport
25
+ multipart-post
26
+ oauth (~> 0.5, >= 0.5.0)
27
+ minitest (5.11.3)
28
+ multipart-post (2.0.0)
29
+ oauth (0.5.4)
30
+ parallel (1.12.1)
31
+ parser (2.4.0.2)
32
+ ast (~> 2.3)
33
+ powerpack (0.1.1)
34
+ rainbow (3.0.0)
35
+ rake (12.3.0)
36
+ rspec (3.7.0)
37
+ rspec-core (~> 3.7.0)
38
+ rspec-expectations (~> 3.7.0)
39
+ rspec-mocks (~> 3.7.0)
40
+ rspec-core (3.7.0)
41
+ rspec-support (~> 3.7.0)
42
+ rspec-expectations (3.7.0)
43
+ diff-lcs (>= 1.2.0, < 2.0)
44
+ rspec-support (~> 3.7.0)
45
+ rspec-mocks (3.7.0)
46
+ diff-lcs (>= 1.2.0, < 2.0)
47
+ rspec-support (~> 3.7.0)
48
+ rspec-support (3.7.0)
49
+ rubocop (0.52.1)
50
+ parallel (~> 1.10)
51
+ parser (>= 2.4.0.2, < 3.0)
52
+ powerpack (~> 0.1)
53
+ rainbow (>= 2.2.2, < 4.0)
54
+ ruby-progressbar (~> 1.7)
55
+ unicode-display_width (~> 1.0, >= 1.0.1)
56
+ ruby-progressbar (1.9.0)
57
+ rx (0.0.3)
58
+ thread_safe (0.3.6)
59
+ tzinfo (1.2.4)
60
+ thread_safe (~> 0.1)
61
+ unicode-display_width (1.3.0)
62
+
63
+ PLATFORMS
64
+ ruby
65
+
66
+ DEPENDENCIES
67
+ bundler
68
+ gerrit2jiracomment!
69
+ rake
70
+ rspec
71
+ rspec-mocks
72
+ rubocop
73
+
74
+ BUNDLED WITH
75
+ 1.16.1
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
6
+
7
+ RuboCop::RakeTask.new
8
+ # as soon as the project is clean enough, enable this
9
+ Rake::Task['build'].enhance(['rubocop:auto_correct'])
10
+
11
+ RSpec::Core::RakeTask.new(:spec)
12
+
13
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'gerrit2jiracomment'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby --encoding utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'gerrit2jiracomment'
6
+
7
+ Gerrit2jiracomment.run
@@ -0,0 +1,34 @@
1
+
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path('../lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'gerrit2jiracomment/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = 'gerrit2jiracomment'
10
+ spec.version = Gerrit2jiracomment::VERSION
11
+ spec.authors = ['Christian Koestlin']
12
+ spec.email = ['info@esrlabs.com']
13
+
14
+ spec.summary = 'Simple gem that listens on gerrit stream-events' \
15
+ ' and puts comments to jira.'
16
+ spec.description = 'Nothing more to add'
17
+ spec.homepage = 'https://not.done.yet'
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(test|spec|features)/})
21
+ end
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_dependency 'byebug'
27
+ spec.add_dependency 'jira-ruby'
28
+ spec.add_dependency 'rx'
29
+ spec.add_development_dependency 'bundler'
30
+ spec.add_development_dependency 'rake'
31
+ spec.add_development_dependency 'rspec'
32
+ spec.add_development_dependency 'rspec-mocks'
33
+ spec.add_development_dependency 'rubocop'
34
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gerrit2jiracomment
4
+ VERSION = '0.2.2'
5
+ end
@@ -0,0 +1,234 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'gerrit2jiracomment/version'
4
+ require 'logger'
5
+ require 'syslog/logger'
6
+ require 'json'
7
+ require 'open3'
8
+ require 'ostruct'
9
+ require 'byebug'
10
+ require 'jira-ruby'
11
+ require 'yaml'
12
+ require 'rx'
13
+
14
+ # Gerrit 2 jira sync module
15
+ module Gerrit2jiracomment
16
+ # wrapper for a logger that always adds tags
17
+ class LoggerWithTag
18
+ def initialize(log, tag)
19
+ @log = log
20
+ @tag = tag
21
+ end
22
+
23
+ def debug(message)
24
+ @log.debug("#{@tag}†#{message}")
25
+ end
26
+
27
+ def info(message)
28
+ @log.info("#{@tag}†#{message}")
29
+ end
30
+
31
+ def error(message, error)
32
+ error_message = "#{error} #{error.backtrace.join('\\n\\t')}"
33
+ @log.error("#{@tag}†#{message}: #{error_message}")
34
+ end
35
+
36
+ def fail(c, message)
37
+ raise(c, "#{@tag}†#{message}")
38
+ end
39
+ end
40
+
41
+ def self.regexp
42
+ Regexp.new('\\b*[A-Z0-9]+-\\d+\\b*')
43
+ end
44
+
45
+ # Exception if something goes wrong with processing events
46
+ class ProcessException < RuntimeError
47
+ def initialize(msg)
48
+ super(msg)
49
+ end
50
+ end
51
+
52
+ # React on events by sending data to jira
53
+ class ToJira
54
+ def initialize(logger, jira)
55
+ @logger = logger
56
+ @jira = jira
57
+ end
58
+
59
+ def gitiles_url(base_url, event)
60
+ gitiles = "#{base_url}/plugins/gitiles/"
61
+ "[#{event.patchSet.revision}|" \
62
+ "#{gitiles}#{event.change.project}/+/#{event.patchSet.revision}]"
63
+ end
64
+
65
+ def author_line(event)
66
+ "Author: #{event.patchSet.author.email}"
67
+ end
68
+
69
+ def submitter_line(event)
70
+ "Submitter: #{event.submitter.email}"
71
+ end
72
+
73
+ def commit_line(base_url, event)
74
+ "Commit: #{gitiles_url(base_url, event)}"
75
+ end
76
+
77
+ def changeset_line(event)
78
+ url = event.change.url
79
+ "Changeset: [#{url}|#{url}]"
80
+ end
81
+
82
+ def branch_line(event)
83
+ "Branch: #{event.change.branch}"
84
+ end
85
+
86
+ def project_line(server, event)
87
+ "Project: #{server}/#{event.change.project}"
88
+ end
89
+
90
+ def title_line(event)
91
+ "Title: #{event.change.subject}"
92
+ end
93
+
94
+ def assemble_change_merged_comment(event, server, uri)
95
+ base_url = "#{uri.scheme}://#{uri.host}"
96
+ [title_line(event), author_line(event), submitter_line(event),
97
+ changeset_line(event), branch_line(event),
98
+ project_line(server, event), commit_line(base_url, event)]
99
+ .join("\n")
100
+ end
101
+
102
+ def handle_change_merged_issue_comment(issue, log, event, server)
103
+ log.debug("Found jira issue comment: '#{issue}'")
104
+ uri = URI.parse(event.change.url)
105
+ comment_text = assemble_change_merged_comment(event, server, uri)
106
+ log.debug("Adding #{comment_text} to jira #{issue}")
107
+ @jira.Issue.find(issue).comments.build.save!(body: comment_text)
108
+ true
109
+ rescue JIRA::HTTPError => e
110
+ log.error("Cannot find #{issue} in our jira", e)
111
+ false
112
+ end
113
+
114
+ def change_merged(log, event, server)
115
+ log = LoggerWithTag.new(log, 'changeset')
116
+
117
+ log.debug("Send change merged to jira #{event}")
118
+
119
+ message = event.change.commitMessage
120
+ log.debug("Found commit: #{event.change.subject}\n#{message}")
121
+
122
+ found = false
123
+ message.scan(Gerrit2jiracomment.regexp).map(&:strip).each do |match|
124
+ found ||= handle_change_merged_issue_comment(match, log, event, server)
125
+ end
126
+
127
+ found || log.fail(ProcessException, "No jira-issue found in #{event}")
128
+ end
129
+ end
130
+
131
+ def self.parse_json(line)
132
+ JSON.parse(line, object_class: OpenStruct)
133
+ end
134
+
135
+ def self.stdout_in_utf8(command)
136
+ _stdin, stdout, _stderr = Open3.popen3(command)
137
+ stdout.set_encoding 'UTF-8:UTF-8'
138
+ stdout
139
+ end
140
+
141
+ def self.receive_events(logger, from, sink)
142
+ Thread.new do
143
+ logger.debug("lifecycle†Connecting to event stream of #{from}")
144
+ stdout_in_utf8("ssh #{from} gerrit stream-events").each_line do |line|
145
+ sink.on_next([JSON.parse(line, object_class: OpenStruct), from])
146
+ end
147
+ logger.debug("lifecycle†Processing stream from #{from} finished")
148
+ rescue StandardError => e
149
+ logger.error(e.to_s)
150
+ end
151
+ end
152
+
153
+ def self.dispatch(log, e, sink)
154
+ logger = LoggerWithTag.new(log, 'events')
155
+ event = e.first
156
+ server = e[1]
157
+ return sink.send(event.type.tr('-', '_').to_sym, log, event, server)
158
+ rescue NoMethodError => e
159
+ logger.debug("Cannot handle event of type #{event.type} - #{e}")
160
+ false
161
+ rescue StandardError => error
162
+ logger.error('Cannot process event', error)
163
+ false
164
+ end
165
+
166
+ def self.syslog_or_stdout_logger
167
+ Syslog::Logger.new 'g2jc'
168
+ rescue StandardError
169
+ Logger.new(STDOUT)
170
+ end
171
+
172
+ def self.tag_and_message(msg)
173
+ tag, m = msg.split('†')
174
+ unless m
175
+ m = tag
176
+ tag = 'gerrit2jiracomment'
177
+ end
178
+ [tag, m]
179
+ end
180
+
181
+ def self.init_logger
182
+ logger = syslog_or_stdout_logger
183
+ logger.formatter = proc do |severity, datetime, _progname, msg|
184
+ tag, message = tag_and_message(msg)
185
+ format('%<year>04d-%<month>02d-%<day>02d %<hour>02d:%<min>02d:' \
186
+ "%<sec>02d.000 7331 %<severity>s %<tag>s: %<message>s\n",
187
+ year: datetime.year, month: datetime.month, day: datetime.day,
188
+ hour: datetime.hour, min: datetime.min, sec: datetime.sec,
189
+ severity: severity[0], tag: tag, message: message)
190
+ end
191
+ logger
192
+ end
193
+
194
+ def self.load_settings(logger)
195
+ logger.debug('lifecycle†loading settings from settings.yaml.gpg')
196
+ YAML.safe_load(`gpg --decrypt settings.yaml.gpg 2> /dev/null`)
197
+ end
198
+
199
+ def self.to_jira(logger, settings)
200
+ ToJira.new(logger,
201
+ JIRA::Client.new(
202
+ username: settings['jira_user'],
203
+ password: settings['jira_password'],
204
+ site: 'https://esrlabs.atlassian.net/',
205
+ context_path: '', auth_type: :basic,
206
+ use_ssl: true,
207
+ ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE
208
+ ))
209
+ end
210
+
211
+ def self.connect(logger, subject, event_sink)
212
+ subject.as_observable.subscribe(
213
+ ->(e) { dispatch(logger, e, event_sink) },
214
+ ->(_err) { logger.error(error) },
215
+ -> { logger.info('lifecycle†finished') }
216
+ )
217
+ end
218
+
219
+ def self.run
220
+ logger = init_logger
221
+
222
+ settings = load_settings(logger)
223
+
224
+ subject = Rx::Subject.new
225
+ event_sink = to_jira(logger, settings)
226
+
227
+ connect(logger, subject, event_sink)
228
+
229
+ ['gerrit.int.esrlabs.com', 'git.esrlabs.com']
230
+ .map { |server| receive_events(logger, server, subject) }
231
+ .each(&:join)
232
+ logger.info('lifecycle†exiting')
233
+ end
234
+ end
data/readme.org ADDED
@@ -0,0 +1,17 @@
1
+ * Gerrit2jiracomment [[https://github.com/gizmomogwai/gerrit2jiracomment][https://img.shields.io/github/tag/gizmomogwai/gerrit2jiracomment.svg?style=flat-square]] [[https://travis-ci.org/gizmomogwai/gerrit2jiracomment][https://img.shields.io/travis/gizmomogwai/gerrit2jiracomment/master.svg?style=flat-square]] [[https://codecov.io/gh/gizmomogwai/gerrit2jiracomment][https://img.shields.io/codecov/c/github/gizmomogwai/gerrit2jiracomment/master.svg?style=flat-square]] [[https://gizmomogwai.github.io/gerrit2jiracomment][https://img.shields.io/readthedocs/pip.svg?style=flat-square]]
2
+
3
+ Proof of concept implementation that listens on a gerrit stream and updated jira comments accordingly.
4
+
5
+ ** Installation
6
+
7
+ first compile and install gerry 0.1.5.
8
+ then compile and install gerrit2jiracomment.
9
+
10
+ ** Usage
11
+
12
+ `bundle exec exe/gerrit2jiracomment` for development or just gerrit2jiracomment
13
+ encode your settings with gpg -e -r user@email.com settings.yaml
14
+
15
+ ** Development
16
+
17
+ ** Contributing
@@ -0,0 +1,5 @@
1
+ --- # settings
2
+ jira_user: jenkins-jira@esrlabs.com
3
+ jira_password: the_password
4
+ gerrit_user: christian.koestlin
5
+ gerrit_password: the_password
metadata ADDED
@@ -0,0 +1,173 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gerrit2jiracomment
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Christian Koestlin
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: byebug
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jira-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rx
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-mocks
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Nothing more to add
126
+ email:
127
+ - info@esrlabs.com
128
+ executables:
129
+ - gerrit2jiracomment
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".gitignore"
134
+ - ".rspec"
135
+ - ".rubocop.yml"
136
+ - ".ruby-gemset"
137
+ - ".ruby-version"
138
+ - ".travis.yml"
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - Rakefile
142
+ - bin/console
143
+ - bin/setup
144
+ - exe/gerrit2jiracomment
145
+ - gerrit2jiracomment.gemspec
146
+ - lib/gerrit2jiracomment.rb
147
+ - lib/gerrit2jiracomment/version.rb
148
+ - readme.org
149
+ - settings.yaml.example
150
+ homepage: https://not.done.yet
151
+ licenses: []
152
+ metadata: {}
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ requirements: []
168
+ rubyforge_project:
169
+ rubygems_version: 2.7.3
170
+ signing_key:
171
+ specification_version: 4
172
+ summary: Simple gem that listens on gerrit stream-events and puts comments to jira.
173
+ test_files: []