summaryrefslogtreecommitdiff
path: root/templates/troclarc.yaml.erb
diff options
context:
space:
mode:
Diffstat (limited to 'templates/troclarc.yaml.erb')
-rw-r--r--templates/troclarc.yaml.erb44
1 files changed, 44 insertions, 0 deletions
diff --git a/templates/troclarc.yaml.erb b/templates/troclarc.yaml.erb
new file mode 100644
index 0000000..5584fd8
--- /dev/null
+++ b/templates/troclarc.yaml.erb
@@ -0,0 +1,44 @@
+<%
+ # stupid but effective sorting of yaml
+ # forgive me for that, but puppet monkeypatches yaml heavily and breaks it constantly
+ # for our use case it should be sufficient, otherwise we need to
+ # extent it to address the new problems
+ def sort_pseudo_yaml(obj, indent='')
+ arr = obj.sort {|a,b| (a[0].is_a?(Symbol) ? a[0].to_s : a[0]) <=> (b[0].is_a?(Symbol) ? b[0].to_s : b[0]) }
+ out = []
+ arr.each do |e|
+ if e[1].is_a?(Hash)
+ out << "#{indent}#{e[0]}:"
+ out << sort_pseudo_yaml(e[1],indent+' ')
+ elsif e[1].is_a?(Array)
+ out << (["#{indent}#{e[0]}:"]+e[1].collect{|e| "- #{e}" }).join("\n#{indent}")
+ else
+ out << "#{indent}#{e[0].is_a?(Symbol) ? ":#{e[0].to_s}" : e[0]}: #{e[1].is_a?(Symbol) ? ":#{e[1].to_s}" : e[1]}"
+ end
+ end
+ out.join("\n")
+ end
+ def sym_keys(h)
+ h.keys.inject({}) do |r,k|
+ r[k.to_sym] = h[k]
+ r
+ end
+ end
+ # transform special options so they are understood by the other libraries
+ so = @store_options.dup
+ so['adapter'] = so['adapter'].to_sym if so['adapter']
+ so['adapter_options'] = sym_keys(so['adapter_options']) if so['adapter_options']
+ eo = @encryption_options ? sym_keys(@encryption_options) : {}
+ options_hash = {
+ 'store' => @store.nil? ? @store : @store.to_sym,
+ 'store_options' => so,
+ 'encryption' => @encryption.nil? ? @encryption : @encryption.to_sym,
+ 'encryption_options' => eo,
+ 'options' => @options,
+ 'profiles' => @merged_profiles,
+ }.delete_if{|k,v| v.nil? || (v.is_a?(Symbol) ? v.to_s : v).empty? }
+ output = sort_pseudo_yaml(options_hash)
+-%>---
+<% unless output.empty? -%>
+<%= output %>
+<% end -%>