-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathpuppet_references.rb
More file actions
89 lines (79 loc) · 3.43 KB
/
puppet_references.rb
File metadata and controls
89 lines (79 loc) · 3.43 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# frozen_string_literal: true
require 'pathname'
module PuppetReferences
BASE_DIR = Pathname.new(File.expand_path(__FILE__)).parent.parent
PUPPET_DIR = BASE_DIR + 'vendor/puppet'
FACTER_DIR = BASE_DIR + 'vendor/facter'
AGENT_DIR = BASE_DIR + 'vendor/puppet-agent'
PE_DIR = BASE_DIR + 'vendor/enterprise-dist'
PE_SERVER_DIR = BASE_DIR + 'vendor/pe-puppetserver'
OUTPUT_DIR = BASE_DIR + 'references_output'
require 'puppet_references/config'
require 'puppet_references/util'
require 'puppet_references/repo'
require 'puppet_references/reference'
require 'puppet_references/doc_command'
require 'puppet_references/man_command'
require 'puppet_references/puppet/puppet_doc'
require 'puppet_references/puppet/strings'
require 'puppet_references/puppet/man'
require 'puppet_references/puppet/type'
require 'puppet_references/puppet/type_strings'
require 'puppet_references/puppet/functions'
require 'puppet_references/facter/core_facts'
require 'puppet_references/facter/facter_cli'
require 'puppet_references/version_tables/config'
require 'puppet_references/version_tables/data/pe'
require 'puppet_references/version_tables/data/agent'
def self.build_puppet_references(commit)
references = [
PuppetReferences::Puppet::Man,
PuppetReferences::Puppet::PuppetDoc,
PuppetReferences::Puppet::Type,
PuppetReferences::Puppet::TypeStrings,
PuppetReferences::Puppet::Functions,
]
config = PuppetReferences::Config.read
repo = PuppetReferences::Repo.new('openvox', PUPPET_DIR, nil, config['puppet']['repo'])
real_commit = repo.checkout(commit)
repo.update_bundle
build_from_list_of_classes(references, real_commit)
end
def self.semantic?(string)
Gem::Version.correct?(string)
end
def self.build_facter_references(commit)
references = [
PuppetReferences::Facter::CoreFacts,
]
# Adding this workaround so the build doesn't fail for 3.y. Check with Claire to see if
# we need the CLI docs for 3.y. We can remove this when we stop building 3.y.
version4 = Gem::Version.create('4.0.0')
repo = PuppetReferences::Repo.new('facter', FACTER_DIR)
real_commit = repo.checkout(commit)
repo.update_bundle
if !semantic?(commit) || (semantic?(commit) && Gem::Version.create(commit) >= version4)
references << PuppetReferences::Facter::FacterCli
elsif semantic?(commit) && Gem::Version.create(commit) < version4
reference = PuppetReferences::Facter::FacterCli.new(real_commit)
reference.build_v3_cli
end
build_from_list_of_classes(references, real_commit)
end
def self.build_from_list_of_classes(reference_classes, real_commit)
references = reference_classes.map { |r| r.new(real_commit) }
references.each(&:build_all)
locations = references.map do |ref|
"#{ref.class} -> #{ref.latest}"
end.join("\n")
puts 'NOTE: Generated files are in the references_output directory.'
puts "NOTE: You'll have to move the generated files into place yourself. The 'latest' location for each is:"
puts locations
end
def self.update_docs(component)
raise Exception "Missing latest directory in source/#{component}" unless File.exist?("source/#{component}/latest")
raise Exception "No reference output found in references_output/#{component}" unless File.exist?("references_output/#{component}")
require 'fileutils'
FileUtils.cp_r("references_output/#{component}/.", "source/#{component}/latest")
end
end