lib/capistrano/ops/tasks/storage/remove_old_backups.rake in capistrano-ops-0.2.3 vs lib/capistrano/ops/tasks/storage/remove_old_backups.rake in capistrano-ops-0.2.4

- old
+ new

@@ -1,41 +1,58 @@ # frozen_string_literal: true + require 'rake' namespace :storage do - default_backup_path = Rails.env.development? ? 'tmp/backups' : '../../shared/backups' - backup_path = Rails.root.join(default_backup_path).to_s - backups_enabled = Rails.env.production? || ENV['BACKUPS_ENABLED'] == 'true' - + backup_path = Rails.root.join(Rails.env.development? ? 'tmp/backups' : '../../shared/backups').to_s + backups_enabled = Rails.env.production? || ENV['BACKUPS_ENABLED'] == 'true' + external_backup = Rails.env.production? || ENV['EXTERNAL_BACKUP_ENABLED'] == 'true' - desc 'remove old storage backups' - task :remove_old_backups do - bash_regex = "'storage_.{0,}\.tar.gz'" - total_backups_no = (ENV['NUMBER_OF_BACKUPS'] || 7).to_i - - unless backups_enabled && total_backups_no.to_i > 0 - p 'remove_old_backups: Backups are disabled' - exit(0) - end + @env_local_no = ENV['NUMBER_OF_LOCAL_BACKUPS'] + @env_external_no = ENV['NUMBER_OF_EXTERNAL_BACKUPS'] + @total_local_backups_no = (@env_local_no || ENV['NUMBER_OF_BACKUPS'] || 7).to_i + @total_external_backups_no = (@env_external_no || ENV['NUMBER_OF_BACKUPS'] || 7).to_i + desc 'remove old storage backups' + task :remove_old_backups do + bash_regex = "'storage_.{0,}\.tar.gz'" - - commandlist = [ - "cd #{backup_path} && ls -lt ", - "grep -E -i #{bash_regex} ", - "tail -n +#{total_backups_no + 1} ", - "awk '{print $9}' ", - "xargs rm -rf" - ] + unless backups_enabled + puts 'remove_old_backups: Backups are disabled' + exit(0) + end - system(commandlist.join(' | ')) + unless @total_local_backups_no.positive? + puts "remove_old_backups: No local cleanup because option '#{if @env_local_no + 'NUMBER_OF_LOCAL_BACKUPS=' + else + 'NUMBER_OF_BACKUPS=' + end}#{@total_local_backups_no}' sets unlimited backups" + end - if ENV['BACKUP_PROVIDER'].present? - provider = Backup::Api.new - begin - result = provider.remove_old_backups('storage_', total_backups_no) - rescue StandardError => e - p "remove_old_backups failed: #{e.message}" - end - p 'remove_old_backups finished' if result - end + commandlist = [ + "cd #{backup_path} && ls -lt ", + "grep -E -i #{bash_regex} ", + "tail -n +#{@total_local_backups_no + 1} ", + "awk '{print $9}' ", + 'xargs rm -rf' + ] + system(commandlist.join(' | ')) + + if ENV['BACKUP_PROVIDER'].present? && external_backup + unless @total_external_backups_no.positive? + puts "remove_old_backups: No external cleanup because option '#{if @env_external_no + 'NUMBER_OF_EXTERNAL_BACKUPS=' + else + 'NUMBER_OF_BACKUPS=' + end}#{@total_external_backups_no}' sets unlimited backups" + exit(0) + end + provider = Backup::Api.new + begin + result = provider.remove_old_backups('storage_', @total_external_backups_no) + rescue StandardError => e + puts "remove_old_backups failed: #{e.message}" + end + puts 'remove_old_backups finished' if result end + end end