puppet-hashi_stack/lib/puppet/functions/hashi_stack/to_hcl.rb
Bram Vogelaar 9ef92100a9
feat: initial pass on hcl config
Signed-off-by: Bram Vogelaar <bram@attachmentgenie.com>
2023-12-28 22:30:05 +01:00

32 lines
1,011 B
Ruby

# frozen_string_literal: true
require 'hcl2-rb'
# @summary
# Convert a data structure and output it as YAML
Puppet::Functions.create_function(:'hashi_stack::to_hcl') do
# @param data
# The data you want to convert to YAML
# @param options
# A hash of options that will be passed to Ruby's Psych library. Note, this could change between Puppet versions, but at time of writing these are `line_width`, `indentation`, and `canonical`.
#
# @example Output YAML to a file
# file { '/tmp/my.yaml':
# ensure => file,
# content => hashi_stack::to_hcl($myhash),
# }
# @example Use options to control the output format
# file { '/tmp/my.yaml':
# ensure => file,
# content => hashi_stack::to_hcl($myhash, {spaces => 2, tab => 0})
# }
#
# @return [String] The YAML document
dispatch :to_hcl do
param 'Any', :data
optional_param 'Hash', :options
end
def to_hcl(data, options = {})
data.to_hcl2(options.transform_keys(&:to_sym))
end
end