mina-slack 0.1.0 → 1.0.0

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