mirror of
https://github.com/voxpupuli/puppet-hashi_stack.git
synced 2025-05-24 10:55:00 +01:00
32 lines
1,011 B
Ruby
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
|