backup 4.1.10 → 4.1.11

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: 983870cd703f0d01283a94f8f8c45203d13d1284
4
- data.tar.gz: 0e61989e4f48614f6666af3f447994820d2505a2
3
+ metadata.gz: 090ea9bc099efe67691fd99049e41b6d8d2ea39f
4
+ data.tar.gz: d80d17b22d496fc82c0428267245f4bf76b23f43
5
5
  SHA512:
6
- metadata.gz: 9d3323dfbf3326659c4d2fea94ce833a47d6afb1dcbdbe5d21dca409220c5a4a55a44fd9c4f093f7dffb79f55f5ef7506e399f0bb9d7fe430c4a0fdb142922b8
7
- data.tar.gz: ceae4fe4dba98f0b962a034dcf75fe7eb687060fa3f56c689e5c14bee0ef26f5e070c7a1689c32903f187a0833c1ff40ed18ddbf24adf8e6e9e8bbe4cdc2108d
6
+ metadata.gz: fd79088bb12aaf37821f6732240ce9f002acf5b85b4bbc4f7788d6aae6dd7930080215f21f2a2ac20e0ad162e06829fe99db984192a69ab05ec5c8a920feb599
7
+ data.tar.gz: f55230f51475db510b0218c8b059cf9d818f112b7d26d3fc8a1213f1835e6ad7694f641dc221edf321fb92f5d9ff2b018901ed544e0a33a7bec117d62583596d
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  Backup v4.x
2
2
  ===========
3
+
3
4
  [![Code Climate](https://codeclimate.com/github/backup/backup.png)](https://codeclimate.com/github/backup/backup)
4
5
  [![Build Status](https://travis-ci.org/backup/backup.svg?branch=master)](https://travis-ci.org/backup/backup)
6
+ [![Join the chat at https://gitter.im/backup/backup](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/backup/backup?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5
7
 
6
8
  Backup is a system utility for Linux and Mac OS X, distributed as a RubyGem, that allows you to easily perform backup
7
9
  operations. It provides an elegant DSL in Ruby for _modeling_ your backups. Backup has built-in support for various
@@ -20,6 +22,6 @@ Released under the **MIT** [License](LICENSE.md).
20
22
  [Release Notes]: http://backup.github.io/backup/v4/release-notes
21
23
  [Documentation]: http://backup.github.io/backup/v4
22
24
  [Issues]: https://github.com/backup/backup/issues
23
- [Features]: https://github.com/meskyanichi/backup-features/issues
25
+ [Features]: https://github.com/backup/backup-features/issues
24
26
  [Michael van Rooijen]: http://michaelvanrooijen.com
25
27
  [@meskyanichi]: http://twitter.com/#!/meskyanichi
@@ -116,6 +116,7 @@ module Backup
116
116
  autoload :Zabbix, File.join(NOTIFIER_PATH, 'zabbix')
117
117
  autoload :DataDog, File.join(NOTIFIER_PATH, 'datadog')
118
118
  autoload :Ses, File.join(NOTIFIER_PATH, 'ses')
119
+ autoload :Command, File.join(NOTIFIER_PATH, 'command')
119
120
  end
120
121
 
121
122
  ##
@@ -43,7 +43,7 @@ module Backup
43
43
  # Notifiers
44
44
  ['Mail', 'Twitter', 'Campfire', 'Prowl',
45
45
  'Hipchat', 'PagerDuty', 'Pushover', 'HttpPost', 'Nagios',
46
- 'Slack', 'FlowDock', 'Zabbix', 'Ses', 'DataDog']
46
+ 'Slack', 'FlowDock', 'Zabbix', 'Ses', 'DataDog', 'Command']
47
47
  ]
48
48
  )
49
49
  end
@@ -303,7 +303,7 @@ module Backup
303
303
  return [] unless databases.any? || archives.any?
304
304
 
305
305
  [lambda { prepare! }, databases, archives,
306
- lambda { package! }, storages, lambda { clean! }]
306
+ lambda { package! }, lambda { store! }, lambda { clean! }]
307
307
  end
308
308
 
309
309
  ##
@@ -325,6 +325,31 @@ module Backup
325
325
  Cleaner.remove_packaging(self)
326
326
  end
327
327
 
328
+ ##
329
+ # Attempts to use all configured Storages, even if some of them result in exceptions.
330
+ # Returns true or raises first encountered exception.
331
+ def store!
332
+ storage_results = storages.map do |storage|
333
+ begin
334
+ storage.perform!
335
+ rescue => ex
336
+ ex
337
+ end
338
+ end
339
+
340
+ first_exception, *other_exceptions = storage_results.select { |result| result.is_a? Exception }
341
+
342
+ if first_exception
343
+ other_exceptions.each do |exception|
344
+ Logger.error exception.to_s
345
+ Logger.error exception.backtrace.join('\n')
346
+ end
347
+ raise first_exception
348
+ else
349
+ true
350
+ end
351
+ end
352
+
328
353
  ##
329
354
  # Removes the final package file(s) once all configured Storages have run.
330
355
  def clean!
@@ -0,0 +1,99 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Notifier
5
+ class Command < Base
6
+
7
+ ##
8
+ # Command to execute.
9
+ #
10
+ # Make sure it is accessible from your $PATH, or provide
11
+ # the absolute path to the command.
12
+ attr_accessor :command
13
+
14
+ ##
15
+ # Arguments to pass to the command.
16
+ #
17
+ # Must be an array of strings or callable objects.
18
+ #
19
+ # Callables will be invoked with #call(model, status),
20
+ # and the return value used as the argument.
21
+ #
22
+ # In strings you can use the following placeholders:
23
+ #
24
+ # %l - Model label
25
+ # %t - Model trigger
26
+ # %s - Status (success/failure/warning)
27
+ # %v - Status verb (succeeded/failed/succeeded with warnings)
28
+ #
29
+ # All placeholders can be used with uppercase letters to capitalize
30
+ # the value.
31
+ #
32
+ # Defaults to ["%L %v"]
33
+ attr_accessor :args
34
+
35
+ def initialize(model, &block)
36
+ super
37
+ instance_eval(&block) if block_given?
38
+
39
+ @args ||= ["%L %v"]
40
+ end
41
+
42
+ private
43
+
44
+ ##
45
+ # Notify the user of the backup operation results.
46
+ #
47
+ # `status` indicates one of the following:
48
+ #
49
+ # `:success`
50
+ # : The backup completed successfully.
51
+ # : Notification will be sent if `on_success` is `true`.
52
+ #
53
+ # `:warning`
54
+ # : The backup completed successfully, but warnings were logged.
55
+ # : Notification will be sent if `on_warning` or `on_success` is `true`.
56
+ #
57
+ # `:failure`
58
+ # : The backup operation failed.
59
+ # : Notification will be sent if `on_warning` or `on_success` is `true`.
60
+ #
61
+ def notify!(status)
62
+ IO.popen([@command] + args.map { |arg| format_arg(arg, status) })
63
+ end
64
+
65
+ def format_arg(arg, status)
66
+ if arg.respond_to?(:call)
67
+ arg.call(model, status)
68
+ else
69
+ arg.gsub(/%(\w)/) do |match|
70
+ ph = match[1]
71
+ val = case ph.downcase
72
+ when "l"
73
+ model.label
74
+ when "t"
75
+ model.trigger.to_s
76
+ when "v"
77
+ status_verb(status)
78
+ when "s"
79
+ status.to_s
80
+ end
81
+ val.capitalize! if ph == ph.upcase
82
+ val
83
+ end
84
+ end
85
+ end
86
+
87
+ def status_verb(status)
88
+ case status
89
+ when :success
90
+ "succeeded"
91
+ when :failure
92
+ "failed"
93
+ when :warning
94
+ "succeeded with warnings"
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Backup
4
- VERSION = '4.1.10'
4
+ VERSION = '4.1.11'
5
5
  end
@@ -0,0 +1,32 @@
1
+ ##
2
+ # Command [Notifier]
3
+ #
4
+ notify_by Command do |cmd|
5
+ cmd.on_success = true
6
+ cmd.on_warning = true
7
+ cmd.on_failure = true
8
+
9
+ # Command to execute
10
+ cmd.command = 'notify-send'
11
+
12
+ # Arguments to pass to the command.
13
+ #
14
+ # Must be an array of strings or callable objects.
15
+ #
16
+ # Callables will be invoked with #call(model, status),
17
+ # and the return value used as the argument.
18
+ #
19
+ # In strings you can use the following placeholders:
20
+ #
21
+ # %l - Model label
22
+ # %t - Model trigger
23
+ # %s - Status (success/failure/warning)
24
+ # %v - Status verb (succeeded/failed/succeeded with warnings)
25
+ #
26
+ # All placeholders can be used with uppercase letters to capitalize
27
+ # the value.
28
+ #
29
+ # Defaults to ["%L %v"]
30
+ #
31
+ # cmd.args = ["Backup %L", "%V"]
32
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.10
4
+ version: 4.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van Rooijen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-13 00:00:00.000000000 Z
11
+ date: 2015-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: CFPropertyList
@@ -928,6 +928,7 @@ files:
928
928
  - lib/backup/model.rb
929
929
  - lib/backup/notifier/base.rb
930
930
  - lib/backup/notifier/campfire.rb
931
+ - lib/backup/notifier/command.rb
931
932
  - lib/backup/notifier/datadog.rb
932
933
  - lib/backup/notifier/flowdock.rb
933
934
  - lib/backup/notifier/hipchat.rb
@@ -985,6 +986,7 @@ files:
985
986
  - templates/cli/model
986
987
  - templates/cli/notifier/zabbix
987
988
  - templates/cli/notifiers/campfire
989
+ - templates/cli/notifiers/command
988
990
  - templates/cli/notifiers/datadog
989
991
  - templates/cli/notifiers/flowdock
990
992
  - templates/cli/notifiers/hipchat
@@ -1024,16 +1026,7 @@ homepage: https://github.com/backup/backup
1024
1026
  licenses:
1025
1027
  - MIT
1026
1028
  metadata: {}
1027
- post_install_message: |2+
1028
-
1029
- Thank you for installing Backup!
1030
-
1031
- See the Release Notes for changes in this version:
1032
- http://backup.github.io/backup/v4/release-notes
1033
-
1034
- If you're upgrading from v3.x, be sure to read:
1035
- http://backup.github.io/backup/v4/upgrading
1036
-
1029
+ post_install_message:
1037
1030
  rdoc_options: []
1038
1031
  require_paths:
1039
1032
  - lib
@@ -1041,7 +1034,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1041
1034
  requirements:
1042
1035
  - - ">="
1043
1036
  - !ruby/object:Gem::Version
1044
- version: 1.9.3
1037
+ version: '2.0'
1045
1038
  required_rubygems_version: !ruby/object:Gem::Requirement
1046
1039
  requirements:
1047
1040
  - - ">="
@@ -1049,7 +1042,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1049
1042
  version: '0'
1050
1043
  requirements: []
1051
1044
  rubyforge_project:
1052
- rubygems_version: 2.4.5
1045
+ rubygems_version: 2.4.6
1053
1046
  signing_key:
1054
1047
  specification_version: 4
1055
1048
  summary: Provides an elegant DSL in Ruby for performing backups on UNIX-like systems.