lita-teamcity 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 87ec77a9ece625164df00d6af6e6764be14dff91
4
- data.tar.gz: 7c0a590be3ddf77130e40248901855e04b25264b
3
+ metadata.gz: 825977afff6d95b5bb0064838ca64fef02c2672e
4
+ data.tar.gz: 0b471817db0ca61db06b18ec13b1f3d55846c45c
5
5
  SHA512:
6
- metadata.gz: 26f6622797bcc76e4b263983da8b60522f5daaaf78f1a9f68bc9de2fd66b74306888b18ca229fdb71da0bc374d5566aed3eaee4af2ea3af987a5ecca22907adf
7
- data.tar.gz: c28ea70c8f1544eca856abe6e080c544e009cb47cf6142a52e61160c0c68cc429bec04b69eeda49817e2f411a0996ff235c0e21cb2032e5c59337eb2fe292fc8
6
+ metadata.gz: aadbbffa07e5f4570b51ee814c5c8d36bbced791c8023eebfaff6e14f42e90d0e45dec4f4f48e92b5b7874221bded686246bd78f6a53654c37dd71fe596efbdd
7
+ data.tar.gz: fae00de3073293d1c24506614426bbb1d7040f9b741596656a001bdc7cce2955034feb3abf24e6869d0be01db0f85120d3005fe8930797a274792d311d724dc5
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/jetthoughts/lita-teamcity.png?branch=master)](https://travis-ci.org/jetthoughts/lita-teamcity)
4
4
  [![Coverage Status](https://coveralls.io/repos/jetthoughts/lita-teamcity/badge.png)](https://coveralls.io/r/jetthoughts/lita-teamcity)
5
+ [![Gem Version](https://badge.fury.io/rb/lita-teamcity.svg)](https://badge.fury.io/rb/lita-teamcity)
5
6
 
6
7
  Communicate with TeamCity via Chat
7
8
 
data/lib/lita-teamcity.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require "lita"
2
+ require 'cgi'
3
+ require 'teamcity'
2
4
 
3
5
  Lita.load_locales Dir[File.expand_path(
4
6
  File.join("..", "..", "locales", "*.yml"), __FILE__
@@ -7,17 +7,66 @@ module Lita
7
7
  config :user, type: String
8
8
  config :password, type: String
9
9
 
10
- route(/^echo\s+(.+)/, :echo, help: { "echo TEXT" => "Echoes back TEXT." })
10
+ route(/^teamcity\s+projects(\s+(.+))?/, :projects, command: true, help: { "teamcity projects [KEY]" => "List of TeamCity projects." })
11
+ route(/^teamcity\s+builds(\s+(.+))?/, :builds, command: true, help: { "teamcity builds [KEY]" => "List of TeamCity builds." })
12
+ route(/^teamcity\s+build\s+(.+)/, :build, command: true, help: { "teamcity build <buildtype_id> [branch_name]" => "Trigger a build for buildtype_id." })
11
13
 
12
- def echo(response)
13
- builds = client.builds
14
- builds.each do |build|
15
- response.reply(build)
16
- end
14
+ def projects(response)
15
+ message = {
16
+ title: 'Projects',
17
+ text: render_template('projects', projects: client.projects),
18
+ }
19
+
20
+ reply(response, message)
21
+ end
22
+
23
+ def builds(response)
24
+ records = client.builds
25
+ Lita.logger.debug(records)
26
+ message = {
27
+ title: 'Builds',
28
+ text: render_template('builds', builds: records),
29
+ }
30
+ reply(response, message)
31
+ end
32
+
33
+ def build(response)
34
+ Lita.logger.debug(response.matches)
35
+ Lita.logger.debug(response.args)
36
+ Lita.logger.debug(response.room.metadata)
37
+ options = {
38
+ comment: {text: "Triggered by #{response.user.name} in room #{response.room.name} via chatbot"},
39
+ }
40
+ options[:branchName] = response.args[2] if response.args[2]
41
+
42
+ result = client.create_buildqueue(response.args[1], options)
43
+ Lita.logger.debug(result)
44
+
45
+ message = {
46
+ title: 'Done!',
47
+ text: render_template('build', build: result),
48
+ }
49
+ reply(response, message)
17
50
  end
18
51
 
52
+ private
19
53
  def client
20
- @_client ||= TeamCity::Client.new(endpoint: config.endpoint, http_user: config.user, http_password: config.password)
54
+ @_client ||= ::TeamCity::Client.new(endpoint: config.endpoint, http_user: config.user, http_password: config.password)
55
+ end
56
+
57
+ def reply(response, message)
58
+ Lita.logger.info(message[:text])
59
+ case robot.config.robot.adapter
60
+ when :slack
61
+ _message = {
62
+ mrkdwn: true,
63
+ color: '#36a64f',
64
+ }.merge(message)
65
+ attachment = Lita::Adapters::Slack::Attachment.new(message[:text], _message)
66
+ robot.chat_service.send_attachment(response.room, attachment)
67
+ else
68
+ response.reply(message[:title], message[:text])
69
+ end
21
70
  end
22
71
 
23
72
  Lita.register_handler(self)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-teamcity"
3
- spec.version = "0.1.0"
3
+ spec.version = "0.1.1"
4
4
  spec.authors = ["Michael Nikitochkin"]
5
5
  spec.email = ["miry.sof@gmail.com"]
6
6
  spec.description = "Communicate with TeamCity REST API"
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.require_paths = ["lib"]
16
16
 
17
17
  spec.add_runtime_dependency "lita", ">= 4.7"
18
- spec.add_runtime_dependency "teamcity", ">= 1.3.1"
18
+ spec.add_runtime_dependency "teamcity", ">= 1.3.2"
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.3"
21
21
  spec.add_development_dependency "pry-byebug"
@@ -1,5 +1,13 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Lita::Handlers::Teamcity, lita_handler: true do
4
- it { is_expected.to route("projects").to(:some_callback) }
4
+ it { is_expected.to route_command("teamcity projects").to(:projects) }
5
+
6
+ describe "#projects" do
7
+ it "list of active projects" do
8
+ send_command("teamcity projects")
9
+
10
+ expect(replies.first).to eq("boom!")
11
+ end
12
+ end
5
13
  end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,7 @@ SimpleCov.start { add_filter "/spec/" }
8
8
 
9
9
  require "lita-teamcity"
10
10
  require "lita/rspec"
11
+ require "teamcity"
11
12
 
12
13
  # A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
13
14
  # was generated with Lita 4, the compatibility mode should be left disabled.
@@ -0,0 +1 @@
1
+ Triggered <%= @build.buildType.name %> for <%= @build.branchName %>
@@ -0,0 +1 @@
1
+ Triggered <<%= @build.buildType.webUrl %>|<%= @build.buildType.name %>> for <%= @build.branchName %>
@@ -0,0 +1,3 @@
1
+ <% @builds.each do |build| %>
2
+ <%= build.buildTypeId %> [<%= build.branchName %>] #<%= build.number %> : <%= build.status %>
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% @builds.each do |build| %>
2
+ <%= build.buildTypeId %>[<%= build.branchName %>] <<%=build.webUrl%>|#<%= build.number %>>: <%= build.state %> <%= build.status %>
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% @projects.each do |project| %>
2
+ <%= project.name %>
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% @projects.each do |project| %>
2
+ <<%= project.webUrl %>|<%= CGI::escapeHTML(project.name) %>>
3
+ <% end %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-teamcity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Nikitochkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-07 00:00:00.000000000 Z
11
+ date: 2017-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3.1
33
+ version: 1.3.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3.1
40
+ version: 1.3.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -156,6 +156,12 @@ files:
156
156
  - spec/lita/handlers/teamcity_spec.rb
157
157
  - spec/spec_helper.rb
158
158
  - templates/.gitkeep
159
+ - templates/build.erb
160
+ - templates/build.slack.erb
161
+ - templates/builds.erb
162
+ - templates/builds.slack.erb
163
+ - templates/projects.erb
164
+ - templates/projects.slack.erb
159
165
  homepage: https://github.com/jetthoughts/lita-teamcity
160
166
  licenses:
161
167
  - GPL-3.0
@@ -184,4 +190,3 @@ summary: Communicate with TeamCity REST API
184
190
  test_files:
185
191
  - spec/lita/handlers/teamcity_spec.rb
186
192
  - spec/spec_helper.rb
187
- has_rdoc: