filbert 0.0.6 → 0.1.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 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: []