Class: Kennel::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/kennel/filter.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeFilter

Returns a new instance of Filter.



5
6
7
8
# File 'lib/kennel/filter.rb', line 5

def initialize
  project_filter
  tracking_id_filter
end

Class Method Details

.filter_resources!(resources, by, against, name, env) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/kennel/filter.rb', line 23

def self.filter_resources!(resources, by, against, name, env)
  return unless against

  against = against.uniq
  before = resources.dup
  resources.select! { |p| against.include?(p.send(by)) }
  keeping = resources.uniq(&by).size
  return if keeping == against.size

  raise <<~MSG.rstrip
    #{env}=#{against.join(",")} matched #{keeping} #{name}, try any of these:
    #{before.map(&by).sort.uniq.join("\n")}
  MSG
end

Instance Method Details

#project_filterObject



10
11
12
13
14
15
16
17
# File 'lib/kennel/filter.rb', line 10

def project_filter
  projects = ENV["PROJECT"]&.split(",")&.sort&.uniq
  tracking_projects = tracking_id_filter&.map { |id| id.split(":", 2).first }&.sort&.uniq
  if projects && tracking_projects && projects != tracking_projects
    raise "do not set PROJECT= when using TRACKING_ID="
  end
  (projects || tracking_projects)
end

#tracking_id_filterObject



19
20
21
# File 'lib/kennel/filter.rb', line 19

def tracking_id_filter
  (tracking_id = ENV["TRACKING_ID"]) && tracking_id.split(",").sort.uniq
end