gerrit2jiracomment 0.2.2

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