pushpop-slack 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: 95c1e8c6d65e28ab5b56fbffbaab716765a5a65c
4
- data.tar.gz: b71d5f05bd60072218c44bd0b1e0f90877c7e5e4
3
+ metadata.gz: 88e7bfe71d848db00fcea152b73da9cd401e7463
4
+ data.tar.gz: 58dcb70eb30b0829c005765e39083138a29eaef9
5
5
  SHA512:
6
- metadata.gz: 6cc87d58208b7f74dc9a62c756622d50b9bd7acfd58744fbc6dcf3ff95290673ac47b45197359e4df23652066f194b5bc88bd38798e442924f40969137156afb
7
- data.tar.gz: b027d47c17a68810e2b4d4a94ee257cdedaae9b04b2f1440644be313c0fb455718ff8dda0f3ed177a00bf0e85c357314f24aa8861f8e973f6cf2c5051dccd2e0
6
+ metadata.gz: a6316f2ba699f0e903e70e08542d42778b51e2cf4366b6b9ddc7a2209e5979cfe3b579f82ad1ad721ad7d555550b4a6087eb5976d2db0bc3896d93425de46b1e
7
+ data.tar.gz: e1e60d5482a8853fe9b9053d7d4a0d859b63bfaf4e4bb1dcc57d83b8e299bd2c2bc228fa09b3b477c8f4246a390f9360b0df230066b81bfc4c22809fbcf262e2
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'pushpop'
3
+ gem 'pushpop', :git => 'git@github.com:pushpop-project/pushpop.git'
4
4
  gem 'slack-notifier'
5
5
 
6
6
  group :development, :test do
@@ -1,5 +1,5 @@
1
1
  module Pushpop
2
2
  class Slack
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
data/lib/pushpop-slack.rb CHANGED
@@ -14,6 +14,10 @@ module Pushpop
14
14
  attr_accessor :_channel
15
15
  attr_accessor :_username
16
16
  attr_accessor :_message
17
+ attr_accessor :_icon
18
+ attr_accessor :_icon_type
19
+ attr_accessor :_attachments
20
+ attr_accessor :_unfurl
17
21
 
18
22
  def run(last_response=nil, step_responses=nil)
19
23
 
@@ -48,6 +52,18 @@ module Pushpop
48
52
  opts['username'] = _username
49
53
  end
50
54
 
55
+ if _icon && _icon_type
56
+ opts["icon_#{_icon_type}"] = _icon
57
+ end
58
+
59
+ if _attachments
60
+ opts['attachments'] = _attachments
61
+ end
62
+
63
+ if _unfurl
64
+ opts['unfurl_links'] = true
65
+ end
66
+
51
67
  return opts
52
68
  end
53
69
 
@@ -60,7 +76,38 @@ module Pushpop
60
76
  end
61
77
 
62
78
  def message(message)
63
- self._message = message
79
+ self._message = ::Slack::Notifier::LinkFormatter.format(message)
80
+ end
81
+
82
+ def attachment(attachment)
83
+ self._attachments = [] unless self._attachments
84
+
85
+ self._attachments.push(attachment)
86
+ end
87
+
88
+ def icon(icon)
89
+ if icon[0..3] == 'http'
90
+ self._icon_type = 'url'
91
+ self._icon = icon
92
+ else
93
+ self._icon_type = 'emoji'
94
+ self._icon = icon
95
+
96
+ # Make sure the emoji is wrapped in colons
97
+ if self._icon[0] != ':'
98
+ self._icon = ":#{self._icon}"
99
+ end
100
+
101
+ if self._icon[self._icon.length - 1] != ':'
102
+ self._icon = "#{self._icon}:"
103
+ end
104
+ end
105
+
106
+ self._icon
107
+ end
108
+
109
+ def unfurl(should = true)
110
+ self._unfurl = should
64
111
  end
65
112
 
66
113
  def configure(last_response=nil, step_responses=nil)
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.description = "pushpop-slack allows you to send messages to your slack channel inside of a Pushpop job"
14
14
 
15
15
  s.add_dependency "pushpop"
16
+ s.add_dependency "slack-notifier"
16
17
 
17
18
  s.files = `git ls-files`.split("\n")
18
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  describe Pushpop::Slack do
4
4
  it 'should make sure there is a message' do
5
5
  step = Pushpop::Slack.new do
6
- message 'test'
7
6
  end
8
7
 
9
8
  expect{step.run}.to raise_error
@@ -11,17 +10,118 @@ describe Pushpop::Slack do
11
10
 
12
11
  it 'should prepend a # to the channel if its not there' do
13
12
  step = Pushpop::Slack.new do
13
+ message 'nothing'
14
14
  channel 'test'
15
15
  end
16
16
 
17
- step.options['channel'].should eq('#test')
17
+ step.configure
18
+
19
+ expect(step.options['channel']).to eq('#test')
18
20
  end
19
21
 
20
22
  it 'should not prepend a # to the channel if its already there' do
21
23
  step = Pushpop::Slack.new do
24
+ message 'nothing'
22
25
  channel '#test'
23
26
  end
24
27
 
25
- step.options['channel'].should eq('#test')
28
+ step.configure
29
+
30
+ expect(step.options['channel']).to eq('#test')
31
+ end
32
+
33
+ it 'should set URL icons' do
34
+ step = Pushpop::Slack.new do
35
+ message 'nothing'
36
+ icon 'https://keen.io/file.png'
37
+ end
38
+
39
+ step.configure
40
+
41
+ expect(step.options["icon_url"]).to eq("https://keen.io/file.png")
42
+ end
43
+
44
+ it 'should set emoji icons' do
45
+ step = Pushpop::Slack.new do
46
+ message 'nothing'
47
+ icon ':ghost:'
48
+ end
49
+
50
+ step.configure
51
+
52
+ expect(step.options['icon_emoji']).to eq(':ghost:')
53
+ end
54
+
55
+ it 'should set add colons to emoji icons' do
56
+ step = Pushpop::Slack.new do
57
+ message 'nothing'
58
+ icon 'ghost'
59
+ end
60
+
61
+ step.configure
62
+
63
+ expect(step.options['icon_emoji']).to eq(':ghost:')
64
+ end
65
+
66
+ it 'should format links in the message' do
67
+ step = Pushpop::Slack.new do
68
+ message 'Check out [this link](https://keen.io) to Keen!'
69
+ end
70
+
71
+ step.configure
72
+
73
+ expect(step._message).to include('<https://keen.io|this link>')
74
+ end
75
+
76
+ it 'sets attachments' do
77
+ step = Pushpop::Slack.new do
78
+ first_a = {
79
+ fallback: 'tester',
80
+ text: 'heyo',
81
+ color: 'good'
82
+ }
83
+
84
+ message 'nothing'
85
+ attachment first_a
86
+ end
87
+
88
+ step.configure
89
+
90
+ expect(step.options['attachments'].size).to eq(1)
91
+ end
92
+
93
+ it 'sets multiple' do
94
+ step = Pushpop::Slack.new do
95
+ first_a = {
96
+ fallback: 'tester',
97
+ text: 'heyo',
98
+ color: 'good'
99
+ }
100
+
101
+ second_a = {
102
+ fallback: 'tester 2',
103
+ text: 'sup',
104
+ color: 'bad'
105
+ }
106
+
107
+ message 'nothing'
108
+ attachment first_a
109
+ attachment second_a
110
+ end
111
+
112
+ step.configure
113
+
114
+ expect(step.options['attachments'].size).to eq(2)
115
+ end
116
+
117
+ it 'unfurls links' do
118
+ step = Pushpop::Slack.new do
119
+ message 'nothing'
120
+ unfurl
121
+ end
122
+
123
+ step.configure
124
+
125
+ expect(step.options['unfurl_links']).to eq(true)
26
126
  end
27
127
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  $: << File.join(File.dirname(__FILE__), '../lib')
2
2
 
3
3
  require 'pushpop'
4
- require 'pushpop-plugin'
4
+ require 'pushpop-slack'
5
5
 
6
6
  RSpec.configure do |config|
7
7
  config.before :each do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushpop-slack
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
  - Joe Wegner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-24 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pushpop
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: slack-notifier
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'
27
41
  description: pushpop-slack allows you to send messages to your slack channel inside
28
42
  of a Pushpop job
29
43
  email: joe@keen.io