lita-teamcity 0.1.0 → 0.1.1

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