Module: SeedGenerator

Defined in:
lib/norad_cli/support/api_security_container_seed_script.rb

Class Method Summary collapse

Class Method Details

.add_container(container_file, m, long_name, docsite, readme_anchor) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/norad_cli/support/api_security_container_seed_script.rb', line 6

def self.add_container(container_file, m, long_name, docsite, readme_anchor)
  container_file.write("\n") unless container_file.size.zero?
  container_file.write("sc = SecurityContainer.where(name: '#{long_name}').first_or_initialize\n")
  container_file.write("sc.prog_args = '#{m['prog_args']}'\n")
  container_file.write("sc.default_config = #{symbolized_config(m['default_config'])}\n") if m.key?('default_config')
  container_file.write("sc.category = :#{m['category'].to_sym}\n")
  container_file.write("sc.test_types = #{m['test_types']}\n")
  container_file.write("sc.application_type = ApplicationType.find_by(name: '#{m['application_type']}')\n") if m.key?('application_type')
  container_file.write("sc.configurable = #{m['configurable']}\n") if m.key?('configurable')
  container_file.write("sc.multi_host = #{m['multi_host']}\n") if m.key?('multi_host')
  container_file.write("sc.help_url = '#{docsite}##{readme_anchor}'\n")
  container_file.write("sc.save!\n")
end

.process_manifests(seed_file, docsite) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/norad_cli/support/api_security_container_seed_script.rb', line 33

def self.process_manifests(seed_file, docsite)
  File.open(seed_file, 'w') do |container_file|
    Dir.glob('./**/manifest.yml').each do |p|
      manifest = YAML.load(File.new(p, 'r').read)
      readme_anchor = readme_anchor(File.new(p.gsub(/manifest\.yml/, 'README.md')))
      long_name = "#{manifest['registry']}/#{manifest['name']}:#{manifest['version']}"
      add_container(container_file, manifest, long_name, docsite, readme_anchor)
    end
  end
end

.readme_anchor(readme) ⇒ Object



26
27
28
29
30
31
# File 'lib/norad_cli/support/api_security_container_seed_script.rb', line 26

def self.readme_anchor(readme)
  title = readme.readline
  # ## My Test Name123
  # Trim off ## portion of title, replace spaces with -, and downcase
  title.match(/\s*##\s+(.+)/)[1].strip.gsub(/[ .]/, '-').downcase
end

.symbolized_config(config) ⇒ Object



20
21
22
23
24
# File 'lib/norad_cli/support/api_security_container_seed_script.rb', line 20

def self.symbolized_config(config)
  '{ ' + config.reduce([]) do |a, p|
    a << "#{p.first}: '#{p.last}'"
  end.join(', ') + ' }'
end