]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/concat/manifests/fragment.pp
upgrade to concat 2.0.0
[dsa-puppet.git] / 3rdparty / modules / concat / manifests / fragment.pp
diff --git a/3rdparty/modules/concat/manifests/fragment.pp b/3rdparty/modules/concat/manifests/fragment.pp
new file mode 100644 (file)
index 0000000..9cfae66
--- /dev/null
@@ -0,0 +1,55 @@
+# == Define: concat::fragment
+#
+# Creates a concat_fragment in the catalogue
+#
+# === Options:
+#
+# [*target*]
+#   The file that these fragments belong to
+# [*content*]
+#   If present puts the content into the file
+# [*source*]
+#   If content was not specified, use the source
+# [*order*]
+#   By default all files gets a 10_ prefix in the directory you can set it to
+#   anything else using this to influence the order of the content in the file
+#
+define concat::fragment(
+    $target,
+    $ensure  = undef,
+    $content = undef,
+    $source  = undef,
+    $order   = '10',
+) {
+  validate_string($target)
+
+  if $ensure != undef {
+    warning('The $ensure parameter to concat::fragment is deprecated and has no effect.')
+  }
+
+  validate_string($content)
+  if !(is_string($source) or is_array($source)) {
+    fail('$source is not a string or an Array.')
+  }
+
+  if !(is_string($order) or is_integer($order)) {
+    fail('$order is not a string or integer.')
+  } elsif (is_string($order) and $order =~ /[:\n\/]/) {
+    fail("Order cannot contain '/', ':', or '\n'.")
+  }
+
+  if ! ($content or $source) {
+    crit('No content, source or symlink specified')
+  } elsif ($content and $source) {
+    fail("Can't use 'source' and 'content' at the same time")
+  }
+
+  $safe_target_name = regsubst($target, '[/:\n\s]', '_', 'GM')
+
+  concat_fragment { $name:
+    tag     => $safe_target_name,
+    order   => $order,
+    content => $content,
+    source  => $source,
+  }
+}