File: generate.rb

package info (click to toggle)
facter 3.11.0-2%2Bdeb10u2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,576 kB
  • sloc: cpp: 22,910; python: 2,349; ruby: 936; sh: 72; makefile: 41
file content (25 lines) | stat: -rw-r--r-- 753 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env ruby
# Generates a markdown file containing fact documentation.
# usage: ruby generate.rb > facts.md

require 'yaml'
require 'erb'
require 'ostruct'

PATH_TO_SCHEMA = File.join(File.dirname(__FILE__), '../schema/facter.yaml')
PATH_TO_TEMPLATE = File.join(File.dirname(__FILE__), 'template.erb')

schema = YAML.load_file(PATH_TO_SCHEMA)

def format_facts(fact_hash)
  scope = OpenStruct.new({
    :facts => fact_hash
  })

  ERB.new(File.read(PATH_TO_TEMPLATE), nil, '-').result(scope.instance_eval {binding})
end

print "## Modern Facts\n\n"
print format_facts(schema.reject {|name, info| info['hidden'] == true})
print "## Legacy Facts\n\n"
print format_facts(schema.reject {|name, info| info['hidden'].nil? || info['hidden'] == false})