Module: Surrender
- Defined in:
- lib/surrender.rb,
lib/surrender/version.rb,
lib/surrender/bucket_policy.rb,
lib/surrender/weekly_policy.rb,
lib/surrender/yearly_policy.rb,
lib/surrender/monthly_policy.rb,
lib/surrender/most_recent_policy.rb
Defined Under Namespace
Classes: BucketPolicy, MonthlyPolicy, MostRecentPolicy, WeeklyPolicy, YearlyPolicy
Constant Summary collapse
- DEFAULT_ARGUMENTS =
{ most_recent: 7, weekly: 5, monthly: 12, yearly: 2 }.freeze
- BACKUP_RE =
/\b((?:19|2\d)\d{2})(.)?(0\d|1[012])\2?([012]\d|3[01])(?:T|\b)/
- VERSION =
"0.8.2"
Class Method Summary collapse
-
.reject(filenames, options = {}) ⇒ Array<String>
The first argument returns filenames which did not match the regular expression.
Class Method Details
.reject(filenames, options = {}) ⇒ Array<String>
Returns The first argument returns filenames which did not match the regular expression. The second argument returns filenames which matched the regular expression and are candidates to be deleted.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/surrender.rb', line 19 def self.reject(filenames, ={}) = DEFAULT_ARGUMENTS.merge() extra_keys = .keys - DEFAULT_ARGUMENTS.keys raise ArgumentError, "Unknown keys: #{extra_keys.inspect} -- won't proceed" unless extra_keys.empty? policies = [ Surrender::MostRecentPolicy.new(.fetch(:most_recent)), Surrender::WeeklyPolicy.new(.fetch(:weekly)), Surrender::MonthlyPolicy.new(.fetch(:monthly)), Surrender::YearlyPolicy.new(.fetch(:yearly)), ] all_files = filenames.map(&:to_s).map(&:chomp) valid_filenames = all_files.select{|fn| fn =~ BACKUP_RE} unprocessable = all_files - valid_filenames valid_filenames.each do |filename| filename =~ BACKUP_RE date = Date.new($1.to_i, $3.to_i, $4.to_i) policies.each do |policy| policy.add(filename, date) end end deleteable = valid_filenames.select do |filename| policies.all?{|policy| policy.deleteable?(filename)} end [unprocessable, deleteable] end |