class PhilColumns::Filter

Attributes

config[R]
seeds_path[R]
tags[R]

Public Class Methods

new( config ) click to toggle source
# File lib/phil_columns/filter.rb, line 6
def initialize( config )
  @config      = config
  @seeds_path  = config.seeds_path
  @tags        = config.tags
end

Public Instance Methods

calculate_seed_set_all() click to toggle source
# File lib/phil_columns/filter.rb, line 17
def calculate_seed_set_all
end
calculate_seed_set_any() click to toggle source
# File lib/phil_columns/filter.rb, line 20
def calculate_seed_set_any
  if any_exclusion_tags?
    raise PhilColumns::Error,
          "Cannot provide exclusion tags (#{config.exclusion_tags.join( ', ' )}) when operation is any"
  end

  seeds_for_current_env.tap do |seeds|
    unless tags.empty?
      seeds.select! { |seed_meta| (seed_meta.tags & tags).size > 0 }
    end
  end
end
seeds() click to toggle source
# File lib/phil_columns/filter.rb, line 12
def seeds
  load_seeds
  calculate_seed_set
end

Protected Instance Methods

any_exclusion_tags?() click to toggle source
# File lib/phil_columns/filter.rb, line 53
def any_exclusion_tags?
  config.exclusion_tags.size > 0
end
calculate_seed_set() click to toggle source
# File lib/phil_columns/filter.rb, line 39
def calculate_seed_set
  send( "calculate_seed_set_#{config.operation}" ).tap do |seeds|
    unless config.version.blank?
      if config.down
        seeds.select! { |seed_meta| seed_meta.timestamp > config.version }
      else
        seeds.select! { |seed_meta| seed_meta.timestamp <= config.version }
        seeds.reject! { |seed_meta| seed_already_executed?( seed_meta.timestamp ) }
      end
    end

  end
end