Merge pull request #953 from suchpuppet/main
[puppet-modules/puppetlabs-apt.git] / manifests / setting.pp
index 74ef1eabbc0523494156f3390e159d59ff195539..16124c31f51a2901986722e5d2a2c484908e0e42 100644 (file)
@@ -1,5 +1,26 @@
+# @summary Manages Apt configuration files.
+#
+# @see https://docs.puppetlabs.com/references/latest/type.html#file-attributes for more information on source and content parameters
+#
+# @param priority
+#   Determines the order in which Apt processes the configuration file. Files with higher priority numbers are loaded first.
+#
+# @param ensure
+#   Specifies whether the file should exist. Valid options: 'present', 'absent', and 'file'.
+#
+# @param source
+#   Required, unless `content` is set. Specifies a source file to supply the content of the configuration file. Cannot be used in combination 
+#   with `content`. Valid options: see link above for Puppet's native file type source attribute.
+#
+# @param content
+#   Required, unless `source` is set. Directly supplies content for the configuration file. Cannot be used in combination with `source`. Valid 
+#   options: see link above for Puppet's native file type content attribute.
+#
+# @param notify_update
+#   Specifies whether to trigger an `apt-get update` run.
+#
 define apt::setting (
-  Variant[String, Integer] $priority                  = 50,
+  Variant[String, Integer, Array] $priority           = 50,
   Optional[Enum['file', 'present', 'absent']] $ensure = file,
   Optional[String] $source                            = undef,
   Optional[String] $content                           = undef,
@@ -7,22 +28,26 @@ define apt::setting (
 ) {
 
   if $content and $source {
-    fail('apt::setting cannot have both content and source')
+    fail(translate('apt::setting cannot have both content and source'))
   }
 
   if !$content and !$source {
-    fail('apt::setting needs either of content or source')
+    fail(translate('apt::setting needs either of content or source'))
   }
 
   $title_array = split($title, '-')
   $setting_type = $title_array[0]
   $base_name = join(delete_at($title_array, 0), '-')
 
-  validate_re($setting_type, ['\Aconf\z', '\Apref\z', '\Alist\z'], "apt::setting resource name/title must start with either 'conf-', 'pref-' or 'list-'")
+  assert_type(Pattern[/\Aconf\z/, /\Apref\z/, /\Alist\z/], $setting_type) |$a, $b| {
+    fail(translate("apt::setting resource name/title must start with either 'conf-', 'pref-' or 'list-'"))
+  }
 
-  unless is_integer($priority) {
+  if $priority !~ Integer {
     # need this to allow zero-padded priority.
-    validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer')
+    assert_type(Pattern[/^\d+$/], $priority) |$a, $b| {
+      fail(translate('apt::setting priority must be an integer or a zero-padded integer'))
+    }
   }
 
   if ($setting_type == 'list') or ($setting_type == 'pref') {
@@ -44,7 +69,6 @@ define apt::setting (
     ensure  => $ensure,
     owner   => 'root',
     group   => 'root',
-    mode    => '0644',
     content => $content,
     source  => $source,
     notify  => $_notify,