Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / concat / manifests / init.pp
index 0a19b34..5e46d25 100644 (file)
@@ -1,46 +1,83 @@
-# Sets up so that you can use fragments to build a final config file,
+# @summary
+#   Manages a file, compiled from one or more text fragments.
+#
+# @example
+#   concat { '/tmp/concat':
+#     ensure => present,
+#     owner  => 'root',
+#     group  => 'root',
+#     mode   => '0644',
+#   }
+#
+# @param backup
+#   Specifies whether (and how) to back up the destination file before overwriting it. Your value gets passed on to Puppet's native file
+#   resource for execution. Valid options: true, false, or a string representing either a target filebucket or a filename extension
+#   beginning with ".".
 #
 # @param ensure
-#   Present/Absent
-# @param path
-#   The path to the final file. Use this in case you want to differentiate
-#   between the name of a resource and the file path.  Note: Use the name you
-#   provided in the target of your fragments.
-# @param owner
-#   Who will own the file
+#   Specifies whether the destination file should exist. Setting to 'absent' tells Puppet to delete the destination file if it exists, and
+#   negates the effect of any other parameters.
+#
+# @param ensure_newline
+#   Specifies whether to add a line break at the end of each fragment that doesn't already end in one.
+#
+# @param format
+#   Specify what data type to merge the fragments as. Valid options: 'plain', 'yaml', 'json', 'json-array', 'json-pretty',
+#   'json-array-pretty'.
+#
+# @param force
+#   Specifies whether to merge data structures, keeping the values with higher order. Used when format is specified as a value other than
+#   'plain'.
+#
 # @param group
-#   Who will own the file
+#   Specifies a permissions group for the destination file. Valid options: a string containing a group name or integer containing a gid.
+#
 # @param mode
-#   The mode of the final file
-# @param show_diff
-#   Use metaparam for files to show/hide diffs for reporting when using eyaml
-#   secrets.  Defaults to true
-# @param warn
-#   Adds a normal shell style comment top of the file indicating that it is
-#   built by puppet.
-#   Before 2.0.0, this parameter would add a newline at the end of the warn
-#   message. To improve flexibilty, this was removed. Please add it explicitely
-#   if you need it.
-# @param backup
-#   Controls the filebucketing behavior of the final file and see File type
-#   reference for its use.  Defaults to 'puppet'
-# @param replace
-#   Whether to replace a file that already exists on the local system
+#   Specifies the permissions mode of the destination file. Valid options: a string containing a permission mode value in octal notation.
+#
 # @param order
-#   Select whether to order associated fragments by 'alpha' or 'numeric'.
-#   Defaults to 'alpha'.
-# @param ensure_newline
-#   Specifies whether to ensure there's a new line at the end of each fragment.
-#   Valid options: 'true' and 'false'. Default value: 'false'.
+#   Specifies a method for sorting your fragments by name within the destination file. You can override this setting for individual
+#   fragments by adjusting the order parameter in their concat::fragment declarations.
+#
+# @param owner
+#   Specifies the owner of the destination file. Valid options: a string containing a username or integer containing a uid.
+#
+# @param path
+#   Specifies a destination file for the combined fragments.
+#
+# @param replace
+#   Specifies whether to overwrite the destination file if it already exists.
+#
 # @param selinux_ignore_defaults
+#   See the file type's selinux_ignore_defaults documentention:
+#   https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selinux_ignore_defaults
+#
 # @param selrange
+#   See the file type's selrange documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selrange
+#
 # @param selrole
+#   See the file type's selrole documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selrole
+#
 # @param seltype
+#   See the file type's seltype documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-seltype
+#
 # @param seluser
+#   See the file type's seluser documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-seluser
+#
+# @param show_diff
+#   Specifies whether to set the show_diff parameter for the file resource. Useful for hiding secrets stored in hiera from insecure
+#   reporting methods.
+#
 # @param validate_cmd
 #   Specifies a validation command to apply to the destination file.
-#   Requires Puppet version 3.5 or newer. Valid options: a string to be passed
-#   to a file resource. Default value: undefined.
+#
+# @param warn
+#   Specifies whether to add a header message at the top of the destination file. Valid options: the booleans true and false, or a string
+#   to serve as the header.
+#   If you set 'warn' to true, concat adds the following line with an order of 0:
+#   `# This file is managed by Puppet. DO NOT EDIT.`
+#   Before 2.0.0, this parameter would add a newline at the end of the warn message. To improve flexibilty, this was removed. Please add
+#   it explicitly if you need it.
 #
 define concat(
   Enum['present', 'absent']          $ensure                  = 'present',
@@ -60,9 +97,11 @@ define concat(
   Optional[String]                   $selrole                 = undef,
   Optional[String]                   $seltype                 = undef,
   Optional[String]                   $seluser                 = undef,
+  Optional[String]                   $format                  = 'plain',
+  Optional[Boolean]                  $force                   = false,
 ) {
 
-  $safe_name            = regsubst($name, '[/:~\n\s\+\*\(\)@]', '_', 'G')
+  $safe_name            = regsubst($name, '[\\\\/:~\n\s\+\*\(\)@]', '_', 'G')
   $default_warn_message = "# This file is managed by Puppet. DO NOT EDIT.\n"
 
   case $warn {
@@ -98,6 +137,8 @@ define concat(
       order                   => $order,
       ensure_newline          => $ensure_newline,
       validate_cmd            => $validate_cmd,
+      format                  => $format,
+      force                   => $force,
     }
 
     if $_append_header {