mina-slack 0.1.0 → 1.0.0

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
- SHA1:
3
- metadata.gz: b72b29d455c89e9c3811ef1c5e7e2fdd3fc3a16b
4
- data.tar.gz: f97e64fece874b64e56ce2b5b7bb5db96208b79e
2
+ SHA256:
3
+ metadata.gz: 87441ad7b8f3e6cd3b6d1bf04467806b7fbd66421a83ffb261411d0cd4a6dc0d
4
+ data.tar.gz: 9160c1b9654823e9559c68ab4e83bcbcdde1fc2df91f234c1f34fe1a2cb0ef1b
5
5
  SHA512:
6
- metadata.gz: f3e05095bc696693b8b29c3fa5e01a89242435af61cd3e5cf4ceaf9da01976f1e72e9f21f8229037075b5a382420dcbfe5b9abbd0f63a0681ad268a61502f8d9
7
- data.tar.gz: 0ce8ddabcbf087e5c96247723a2058e466f9df0f525684406ddaabd53f7cf1829e8da1a756f04fd621aef5240a7e396cc2b045273609d1f02078bf07ddc9aac3
6
+ metadata.gz: 53772965e7afb0e51e028a6a40f53c543fa933d230fa9a70ed009c910b3bb2e3dabfad47ff9461ddbd4fa4155321bc9d951cfc0fefcb7da166ec789d0cd486fd
7
+ data.tar.gz: 3b29853f6753f32d3fcb94d8e5abfcc31711b3fc38cb76cd5a77941173d47e2cf95908caef1baa5d07f6194070db822f5d0d49cfc86341a9ae57ac2606a2f5d3
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in mina-slack.gemspec
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'mina-slack'
9
+ gem 'mina-slack', require: false
10
10
 
11
11
  And then execute:
12
12
 
@@ -16,6 +16,10 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install mina-slack
18
18
 
19
+ mina 0.3.x:
20
+
21
+ gem 'mina-slack', '~> 0.3.0', require: false
22
+
19
23
  In your slack settings, create new Incomming WebHooks and get WebHooks URL.
20
24
 
21
25
  ## Usage
@@ -23,8 +27,26 @@ In your slack settings, create new Incomming WebHooks and get WebHooks URL.
23
27
  ### Load the recipe
24
28
  Include the recipe in your deploy.rb
25
29
 
26
- # config/deploy.rb
27
- require 'mina/slack'
30
+ ```ruby
31
+ # config/deploy.rb
32
+ require 'mina/slack'
33
+
34
+ task :deploy do
35
+ deploy do
36
+ invoke :'slack:starting'
37
+ ...
38
+
39
+ on :launch do
40
+ ...
41
+ end
42
+ end
43
+
44
+ run(:local) do
45
+ invoke :'slack:finished'
46
+ end
47
+ end
48
+ ```
49
+
28
50
 
29
51
  ### Setup Slack Details
30
52
  You'll need to setup your slack details with an API key, room and subdomain. You can add these as ENV variables or in the config/deploy.rb
data/Rakefile CHANGED
@@ -1 +1,3 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'mina/slack'
6
+ require 'irb'
7
+
8
+ IRB.start
@@ -1,10 +1,3 @@
1
- require "mina/slack/version"
1
+ # frozen_string_literal: true
2
2
 
3
- require 'mina/slack/defaults'
4
- require 'mina/slack/tasks'
5
-
6
-
7
- module Mina
8
- module Slack
9
- end
10
- end
3
+ load File.expand_path('./slack/tasks.rb', __dir__)
@@ -1,79 +1,76 @@
1
- require 'mina/hooks'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'json'
3
4
  require 'net/http'
4
-
5
- # Before and after hooks for mina deploy
6
- before_mina :deploy, :'slack:starting'
7
- after_mina :deploy, :'slack:finished'
8
-
5
+ require 'mina'
9
6
 
10
7
  # Slack tasks
11
8
  namespace :slack do
9
+ # Required
10
+ set :slack_token, -> { ENV['SLACK_TOKEN'] }
11
+ set :slack_room, -> { ENV['SLACK_ROOM'] }
12
+ set :slack_subdomain, -> { ENV['SLACK_SUBDOMAIN'] }
13
+ # Optional
14
+ set :slack_stage, -> { ENV['SLACK_STAGE'] || fetch(:rails_env, 'production') }
15
+ set :slack_application, -> { ENV['SLACK_APPLICATION'] || fetch(:application_name) }
16
+ set :slack_username, -> { ENV['SLACK_USERNAME'] || 'deploybot' }
17
+ set :slack_emoji, -> { ENV['SLACK_EMOJI'] || ':cloud:' }
18
+ # Git
19
+ set :deployer, -> { ENV['GIT_AUTHOR_NAME'] || `git config user.name`.chomp }
20
+ set :deployed_revision, -> { ENV['GIT_COMMIT'] || `git rev-parse #{fetch(:branch)} | cut -c 1-7`.strip }
12
21
 
13
22
  task :starting do
14
- if slack_token and slack_room and slack_subdomain
15
- announcement = "#{announced_deployer} is deploying #{announced_application_name} to #{announced_stage}"
23
+ if fetch(:slack_token) && fetch(:slack_room) && fetch(:slack_subdomain)
24
+ announcement = "#{fetch(:deployer)} is deploying #{announced_application_name} to #{fetch(:slack_stage)}"
16
25
 
17
26
  post_slack_message(announcement)
18
27
  set(:start_time, Time.now)
19
28
  else
20
- print_local_status "Unable to create Slack Announcement, no slack details provided."
29
+ print_error 'Unable to create Slack Announcement, no slack details provided.'
21
30
  end
22
31
  end
23
32
 
24
33
  task :finished do
25
- if slack_token and slack_room and slack_subdomain
34
+ if fetch(:slack_token) && fetch(:slack_room) && fetch(:slack_subdomain)
26
35
  end_time = Time.now
27
36
  start_time = fetch(:start_time)
28
37
  elapsed = end_time.to_i - start_time.to_i
29
38
 
30
- announcement = "#{announced_deployer} successfully deployed #{announced_application_name} in #{elapsed} seconds."
39
+ announcement = "#{fetch(:deployer)} successfully deployed #{announced_application_name} in #{elapsed} seconds."
31
40
 
32
41
  post_slack_message(announcement)
33
42
  else
34
- print_local_status "Unable to create Slack Announcement, no slack details provided."
43
+ print_error 'Unable to create Slack Announcement, no slack details provided.'
35
44
  end
36
45
  end
37
46
 
38
-
39
- def announced_stage
40
- ENV['to'] || rails_env || 'production'
41
- end
42
-
43
- def announced_deployer
44
- deployer
45
- end
46
-
47
- def short_revision
48
- deployed_revision[0..7] if deployed_revision
49
- end
50
-
51
47
  def announced_application_name
52
- "".tap do |output|
53
- output << slack_application if slack_application
54
- output << " #{branch}" if branch
55
- output << " (#{short_revision})" if short_revision
48
+ (+'').tap do |output|
49
+ output << fetch(:slack_application)
50
+ output << " #{fetch(:branch)}" if fetch(:branch)
51
+ output << " (#{fetch(:deployed_revision)})" if fetch(:deployed_revision)
56
52
  end
57
53
  end
58
54
 
59
55
  def post_slack_message(message)
56
+ return if fetch(:simulate)
60
57
  # Parse the URI and handle the https connection
61
- uri = URI.parse("https://#{slack_subdomain}.slack.com/services/hooks/incoming-webhook?token=#{slack_token}")
58
+ uri = URI.parse("https://#{fetch(:slack_subdomain)}.slack.com/services/hooks/incoming-webhook?token=#{fetch(:slack_token)}")
62
59
  http = Net::HTTP.new(uri.host, uri.port)
63
60
  http.use_ssl = true
64
61
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
65
62
 
66
63
  payload = {
67
- "parse" => "full",
68
- "channel" => slack_room,
69
- "username" => slack_username,
70
- "text" => message,
71
- "icon_emoji" => slack_emoji
64
+ 'parse' => 'full',
65
+ 'channel' => fetch(:slack_room),
66
+ 'username' => fetch(:slack_username),
67
+ 'text' => message,
68
+ 'icon_emoji' => fetch(:slack_emoji)
72
69
  }
73
70
 
74
71
  # Create the post request and setup the form data
75
72
  request = Net::HTTP::Post.new(uri.request_uri)
76
- request.set_form_data(:payload => payload.to_json)
73
+ request.set_form_data(payload: payload.to_json)
77
74
 
78
75
  # Make the actual request to the API
79
76
  http.request(request)
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Mina
2
4
  module Slack
3
- VERSION = "0.1.0"
5
+ VERSION = '1.0.0'
4
6
  end
5
7
  end
@@ -1,26 +1,26 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'mina/slack/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "mina-slack"
8
- spec.version = Mina::Slack::VERSION
9
- spec.authors = ["TAKAyuki_atkwsk", "Marcos G. Zimmermann"]
10
- spec.email = ["takagi.takayuki.yuuki@gmail.com", "mgzmaster@gmail.com"]
11
- spec.description = %q{Slack web hook from mina}
12
- spec.summary = %q{Slack web hook from mina}
13
- spec.homepage = "https://github.com/TAKAyukiatkwsk/mina-slack"
14
- spec.license = "MIT"
8
+ spec.name = 'mina-slack'
9
+ spec.version = Mina::Slack::VERSION
10
+ spec.authors = ['TAKAyuki_atkwsk', 'Marcos G. Zimmermann']
11
+ spec.email = ['takagi.takayuki.yuuki@gmail.com', 'mgzmaster@gmail.com']
12
+ spec.description = 'Slack web hook from mina'
13
+ spec.summary = 'Slack web hook from mina'
14
+ spec.homepage = 'https://github.com/TAKAyukiatkwsk/mina-slack'
15
+ spec.license = 'MIT'
15
16
 
16
- spec.files = `git ls-files`.split($/)
17
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
20
21
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'rake'
23
24
 
24
- spec.add_dependency "mina"
25
- spec.add_dependency "mina-hooks"
25
+ spec.add_dependency 'mina', '>= 1.0'
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mina-slack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAKAyuki_atkwsk
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-14 00:00:00.000000000 Z
12
+ date: 2019-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -45,33 +45,20 @@ dependencies:
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '1.0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
56
- - !ruby/object:Gem::Dependency
57
- name: mina-hooks
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
55
+ version: '1.0'
70
56
  description: Slack web hook from mina
71
57
  email:
72
58
  - takagi.takayuki.yuuki@gmail.com
73
59
  - mgzmaster@gmail.com
74
- executables: []
60
+ executables:
61
+ - console
75
62
  extensions: []
76
63
  extra_rdoc_files: []
77
64
  files:
@@ -80,8 +67,8 @@ files:
80
67
  - LICENSE.txt
81
68
  - README.md
82
69
  - Rakefile
70
+ - bin/console
83
71
  - lib/mina/slack.rb
84
- - lib/mina/slack/defaults.rb
85
72
  - lib/mina/slack/tasks.rb
86
73
  - lib/mina/slack/version.rb
87
74
  - mina-slack.gemspec
@@ -105,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
92
  version: '0'
106
93
  requirements: []
107
94
  rubyforge_project:
108
- rubygems_version: 2.2.2
95
+ rubygems_version: 2.7.6
109
96
  signing_key:
110
97
  specification_version: 4
111
98
  summary: Slack web hook from mina
@@ -1,12 +0,0 @@
1
- # Required
2
- set_default :slack_token, -> { ENV['SLACK_TOKEN'] }
3
- set_default :slack_room, -> { ENV['SLACK_ROOM'] }
4
- set_default :slack_subdomain, -> { ENV['SLACK_SUBDOMAIN'] }
5
- # Optional
6
- set_default :slack_stage, -> { ENV['SLACK_STAGE'] || fetch(:rails_env, 'production') }
7
- set_default :slack_application, -> { ENV['SLACK_APPLICATION'] || application }
8
- set_default :slack_username, -> { ENV['SLACK_USERNAME'] || 'deploybot' }
9
- set_default :slack_emoji, -> { ENV['SLACK_EMOJI'] || ':cloud:' }
10
- # Git
11
- set_default :deployer, -> { ENV['GIT_AUTHOR_NAME'] || %x[git config user.name].chomp }
12
- set_default :deployed_revision, -> { ENV['GIT_COMMIT'] || %x[git rev-parse #{branch}].strip }