Class: PruneCloudfilesDbBackups::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/prune_cloudfiles_db_backups/cli.rb

Class Method Summary collapse

Class Method Details

.startObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/prune_cloudfiles_db_backups/cli.rb', line 8

def self.start
  opts = Slop.parse(strict: true, help: true) do
    banner 'Usage: prune_cloudfiles_db_backups [options]'
    on :u, :user=, 'Rackspace user to use. Default: ENV["N_RACKSPACE_API_USERNAME"]', default: ENV['N_RACKSPACE_API_USERNAME']
    on :k, :key=, 'Rackspace key to use. Default: ENV["N_RACKSPACE_API_KEY"]', as: String, default: ENV['N_RACKSPACE_API_KEY']
    on :authurl=, 'Auth URL Default: https://identity.api.rackspacecloud.com/v1.0', default: 'https://identity.api.rackspacecloud.com/v1.0'
    on :c, :container=, 'Rackspace container to prune. Default: dummy_container', default: 'dummy_container'
    on :allow_deletion, 'WARNING: Actually delete files from Rackspace Cloud. Without this option, only a listing of files to be deleted are given.'
    on :d, :daily, 'Set daily retention amount. Default: 14', default: 14, as: Integer
    on :w, :weekly, 'Set weekly retention amount. Default: 12', default: 12, as: Integer
    on :m, :monthly, 'Set monthly retention amount. Default: 8', default: 8, as: Integer
  end

  pruner = PruneCloudfilesDbBackups::Pruner.new(opts)

  puts pruner.date_sorted_delete_list.map { |backup| "Delete: #{backup.to_s}" }
  puts pruner.date_sorted_keep_list.map { |backup| "Keep: #{backup.to_s}" }

  if opts[:allow_deletion]
    puts "Commencing deletion in #{opts[:container]}!"
    progress = ProgressBar.create(title: 'Objects for deletion deleted',
                                  total: pruner.list_to_delete.size,
                                  format: '%e %a |%b>%i| %p%% %t'
    )
    pruner.delete! do |_|
      progress.increment
    end
    progress.finish
    puts 'Deletion completed.'
  else
    puts "Dry run on #{opts[:container]}. No files deleted. Run with --allow_deletion to commence deletion."
  end

end