Module: Legion::Extensions::Detect::Scanner

Defined in:
lib/legion/extensions/detect/scanner.rb

Class Method Summary collapse

Class Method Details

.gather_environmentObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/detect/scanner.rb', line 25

def gather_environment
  @gather_environment ||= { # rubocop:disable ThreadSafety/ClassInstanceVariable
    apps:          scan_applications,
    brew_formulas: scan_brew_formulas,
    brew_casks:    scan_brew_casks,
    env_vars:      ENV.keys,
    ports:         scan_ports,
    files:         nil
  }
end

.reset!Object



36
37
38
# File 'lib/legion/extensions/detect/scanner.rb', line 36

def reset!
  @gather_environment = nil # rubocop:disable ThreadSafety/ClassInstanceVariable
end

.scanObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/detect/scanner.rb', line 10

def scan
  env = gather_environment
  CATALOG.each_with_object([]) do |rule, results|
    matched_signals = rule[:signals].select { |s| signal_present?(s, env) }
    next if matched_signals.empty?

    results << {
      name:            rule[:name],
      extensions:      rule[:extensions],
      matched_signals: matched_signals.map { |s| "#{s[:type]}:#{s[:match]}" },
      installed:       rule[:extensions].to_h { |e| [e, gem_installed?(e)] }
    }
  end
end