filbert 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ea1dd823ecbaa309c75980c3b0e5f94162a44b99
4
+ data.tar.gz: 4061df6ab0cfc924d43d1e8c6eace95e2d91f908
5
+ SHA512:
6
+ metadata.gz: f7a885db781a241683b26db3902ec19a9b2ac29f081b52e21dfad88f51069280fd041e537d9448982faf82efbbae4dc0d31013c1ddd5707f0b9b38cefb1364d9
7
+ data.tar.gz: 649f56be8b16eb9f5fd595833fe065647dc00b1453367a553b4d5b2a7b0f43fe58dbbfde8df574740c0d3207b582e3d39a294e6fa7aa5402be538409912c3341
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Filbert
2
2
 
3
- Filbert downloads a backup of a follower database for a given heroku application and stores it in `~/.heroku_backups`
3
+ Filbert downloads a backup of a follower database for a given heroku application, stores it in `~/.heroku_backups`, and cleans up the backup directory (see cleanup).
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,6 +14,10 @@ to get access to the app you are planning to backup.
14
14
 
15
15
  ## Usage
16
16
 
17
+ ### Backups
18
+
19
+ Note: the backup task invokes cleanup task automatically.
20
+
17
21
  filbert backup --app your-heroku-appname
18
22
 
19
23
  You can add it as a cron task if you want
@@ -24,6 +28,28 @@ You can add it as a cron task if you want
24
28
  # 'man 5 crontab' for more examples
25
29
  */15 * * * * bash -lc "filbert backup --app heroku-app-name"
26
30
 
31
+ ### Cleanup
32
+
33
+ You can invoke the cleanup task separately by running:
34
+
35
+ filbert cleanup
36
+
37
+ Cleanup deletes backup files keeping:
38
+
39
+ * All files that are not older than 12 hours old
40
+ * One monthly copy of files older than 6 months
41
+ * One weekly copy of files older than 3 months
42
+ * One daily copy of files older than 1 week
43
+ * One hourly copy of files older than 12 hours
44
+
45
+ You can see what files would be deleted by passing in `-p`
46
+
47
+ filbert cleanup --pretend
48
+ # => Would delete:
49
+ # => ~/.heroku_backups/2013-01-29.dump
50
+ # => ~/.heroku_backups/2013-01-28.dump
51
+ # => ~/.heroku_backups/2013-01-27.dump
52
+
27
53
  ## Contributing
28
54
 
29
55
  1. Fork it
data/filbert.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
- gem.add_dependency('heroku')
20
- gem.add_dependency('thor')
19
+ gem.add_dependency 'heroku'
20
+ gem.add_dependency 'thor'
21
+ gem.add_dependency 'clean_files', '~> 1.1.1'
21
22
  end
data/lib/filbert/task.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'filbert/db_config'
2
+ require 'clean_files/cleaner'
2
3
 
3
4
  module Filbert
4
5
  class Task < Thor
@@ -20,12 +21,16 @@ module Filbert
20
21
  invoke :cleanup, [], {}
21
22
  end
22
23
 
24
+ method_option :pretend, type: :boolean, required: false, default: false, aliases: '-p'
23
25
  desc "cleanup", "remove backup files older than 12 hours"
24
26
  def cleanup
25
- old_files.each do |file|
26
- say "Deleting old #{File.basename(file.path)}"
27
- File.delete file.path
28
- end
27
+ pretend = options[:pretend]
28
+ say "Would remove:" if pretend
29
+ filter = File.join(backups_dir, "*.dump")
30
+ CleanFiles::Cleaner.new(filter, pretend: pretend, verbose: pretend, threshold: 6.months.ago, monthly: true).start
31
+ CleanFiles::Cleaner.new(filter, pretend: pretend, verbose: pretend, threshold: 3.months.ago, weekly: true).start
32
+ CleanFiles::Cleaner.new(filter, pretend: pretend, verbose: pretend, threshold: 1.week.ago, daily: true).start
33
+ CleanFiles::Cleaner.new(filter, pretend: pretend, verbose: pretend, threshold: 12.hours.ago, hourly: true).start
29
34
  end
30
35
 
31
36
  method_option :config, type: :string, default: "config/database.yml"
@@ -72,13 +77,6 @@ module Filbert
72
77
  out
73
78
  end
74
79
 
75
- def old_files
76
- hurdle = Time.now - 60*60*12
77
- ordered_dumps.select{ |file|
78
- file.mtime < hurdle
79
- }
80
- end
81
-
82
80
  def ordered_dumps
83
81
  Dir.new(backups_dir).select{ |x|
84
82
  x.end_with? '.dump'
@@ -1,3 +1,3 @@
1
1
  module Filbert
2
- VERSION = '0.0.6'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,48 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filbert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tadas Tamosauskas
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-28 00:00:00.000000000 Z
11
+ date: 2013-03-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: heroku
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: thor
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: clean_files
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.1
46
55
  description: A utility to download backups from Heroku followers
47
56
  email:
48
57
  - tadas@pdfcv.com
@@ -65,26 +74,25 @@ files:
65
74
  - lib/filbert/version.rb
66
75
  homepage: https://github.com/alphasights/filbert
67
76
  licenses: []
77
+ metadata: {}
68
78
  post_install_message:
69
79
  rdoc_options: []
70
80
  require_paths:
71
81
  - lib
72
82
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
83
  requirements:
75
- - - ! '>='
84
+ - - '>='
76
85
  - !ruby/object:Gem::Version
77
86
  version: '0'
78
87
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
88
  requirements:
81
- - - ! '>='
89
+ - - '>='
82
90
  - !ruby/object:Gem::Version
83
91
  version: '0'
84
92
  requirements: []
85
93
  rubyforge_project:
86
- rubygems_version: 1.8.23
94
+ rubygems_version: 2.0.0
87
95
  signing_key:
88
- specification_version: 3
96
+ specification_version: 4
89
97
  summary: Heroku followers' backups
90
98
  test_files: []