martilla 0.2.0 → 0.2.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
  SHA256:
3
- metadata.gz: 14bd7c780f6612c6adfbd67e932bf30db058e6af7148a7889d18ab0249e4d768
4
- data.tar.gz: a4cd222e53ac9eefb6fdef35bbe91ff3a2b16f49ddbfefe221a8d5ab244ae2e7
3
+ metadata.gz: b9d31f371877ecf3b302768977e737291d3d9445b381919c4b16f90103d43748
4
+ data.tar.gz: 783aff8488c1a399642de09dd09f70fb6f0fc3011542d6f3b1e8de25901d3e83
5
5
  SHA512:
6
- metadata.gz: 9c6fa4a885951c8a07c88cf62973fa82c63e889b2a4b63080a21888f9a4d8363fdcec841b65b4117af32f8821cccd62798ee1b36271c32a3cf8a6f7d09694a82
7
- data.tar.gz: 612b5bf6139d30935919e2989f9a87b2ebc58cc9f874b9e9a1b3b993f29e2069f1e13001d12696a563c0962cac17b6cba8f36c6b8bf57b404908bab9469adfaf
6
+ metadata.gz: 93c36f6e9fc9a1e0db8bce2241c87071c26c2a9a40d4bc27b62339427c9c5684c0156afc74dcf023008139e7070cc50b4ad24a5dc808ee0bf91c8ab9d8692aa5
7
+ data.tar.gz: 7e83cab89dd30200161bb6a13938119847a5d1a78e3843e41bde85cf33dc3f59eaeda086df719087cc9440fe8e9da70065d90c29d6f0428bdda9c298b6c715a5
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Martilla Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## 0.2.1
8
+ 2019-10-20
9
+
10
+ - Adds Slack Notifier support (thanks [anoopmadhav](https://github.com/fdoxyz/martilla/pull/2))
11
+ - `pipefail` config when using the pipe operator in Mysql & Postgres database adapters
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- martilla (0.2.0)
4
+ martilla (0.2.1)
5
5
  aws-sdk-s3 (~> 1.49)
6
6
  aws-sdk-ses (~> 1.26)
7
7
  memoist (~> 0.16.0)
8
8
  pony (~> 1.13)
9
+ slack-notifier (~> 2.3.2)
9
10
  thor (~> 0.20.3)
10
11
 
11
12
  GEM
@@ -68,6 +69,7 @@ GEM
68
69
  json (>= 1.8, < 3)
69
70
  simplecov-html (~> 0.10.0)
70
71
  simplecov-html (0.10.2)
72
+ slack-notifier (2.3.2)
71
73
  thor (0.20.3)
72
74
 
73
75
  PLATFORMS
@@ -2,7 +2,7 @@ module Martilla
2
2
  class Mysql < Database
3
3
  def dump(tmp_file:, gzip:)
4
4
  if gzip
5
- `mysqldump #{connection_arguments} | gzip -c > #{tmp_file}`
5
+ `set -o pipefail && mysqldump #{connection_arguments} | gzip -c > #{tmp_file}`
6
6
  else
7
7
  `mysqldump #{connection_arguments} > #{tmp_file}`
8
8
  end
@@ -2,7 +2,7 @@ module Martilla
2
2
  class Postgres < Database
3
3
  def dump(tmp_file:, gzip:)
4
4
  if gzip
5
- `pg_dump #{connection_string} | gzip -c > #{tmp_file}`
5
+ `set -o pipefail && pg_dump #{connection_string} | gzip -c > #{tmp_file}`
6
6
  else
7
7
  `pg_dump #{connection_string} > #{tmp_file}`
8
8
  end
@@ -1,4 +1,51 @@
1
+ require 'slack-notifier'
2
+
1
3
  module Martilla
2
4
  class Slack < Notifier
5
+ def success(data)
6
+ slack_notify(success_txt(data))
7
+ end
8
+
9
+ def error(msg, data)
10
+ slack_notify(error_txt(msg, data))
11
+ end
12
+
13
+ private
14
+
15
+ def slack_notify(message)
16
+ begin
17
+ notifier.ping message
18
+ rescue StandardError => e
19
+ puts "Slack notification not sent. Error message: #{e}"
20
+ end
21
+ end
22
+
23
+ def notifier
24
+ ::Slack::Notifier.new(slack_webhook_url, channel: slack_channel, username: slack_username)
25
+ end
26
+
27
+ def slack_webhook_url
28
+ raise config_error('slack_webhook_url') if @options['slack_webhook_url'].nil?
29
+ @options['slack_webhook_url']
30
+ end
31
+
32
+ def slack_channel
33
+ @options['slack_channel'] || "#general"
34
+ end
35
+
36
+ def slack_username
37
+ @options['slack_username'] || "Martilla"
38
+ end
39
+
40
+ def success_txt(data)
41
+ success_msg = "*The backup was created successfully*\n\n"
42
+ success_msg + data.map { |d| "- #{d}" }.join("\n")
43
+ end
44
+
45
+ def error_txt(msg, data)
46
+ error_msg = "*The backup attempt failed with the following error:*\n #{msg} \n\n"
47
+ error_msg + data.map { |d| "- #{d}" }.join("\n")
48
+ end
49
+
3
50
  end
4
51
  end
@@ -1,3 +1,3 @@
1
1
  module Martilla
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/martilla.gemspec CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency 'pony', '~> 1.13'
34
34
  spec.add_dependency 'aws-sdk-ses', '~> 1.26'
35
35
  spec.add_dependency 'aws-sdk-s3', '~> 1.49'
36
+ spec.add_dependency 'slack-notifier', '~> 2.3.2'
36
37
 
37
38
  spec.add_development_dependency 'bundler', '~> 2.0'
38
39
  spec.add_development_dependency 'rake', '~> 13.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: martilla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernando Valverde
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-19 00:00:00.000000000 Z
11
+ date: 2019-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.49'
83
+ - !ruby/object:Gem::Dependency
84
+ name: slack-notifier
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.3.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.3.2
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +188,7 @@ files:
174
188
  - ".gitignore"
175
189
  - ".rspec"
176
190
  - ".travis.yml"
191
+ - CHANGELOG.md
177
192
  - CODE_OF_CONDUCT.md
178
193
  - Gemfile
179
194
  - Gemfile.lock
@@ -183,7 +198,6 @@ files:
183
198
  - bin/console
184
199
  - bin/martilla
185
200
  - bin/setup
186
- - config.yml
187
201
  - lib/martilla.rb
188
202
  - lib/martilla/backup.rb
189
203
  - lib/martilla/cli.rb
data/config.yml DELETED
@@ -1,14 +0,0 @@
1
- ---
2
- db:
3
- type: postgres
4
- options:
5
- host: localhost
6
- user: username
7
- password: password
8
- db: databasename
9
- storage:
10
- type: local
11
- options:
12
- filename: database-backup.sql
13
- notifiers:
14
- - type: none