apt::setting: Parse type and name from title.
[puppet-modules/puppetlabs-apt.git] / manifests / setting.pp
index 78f007fdbc6ff9815c5287fc67dab8c2b1501ec6..f6f0bc0c2275821a3656d9e14cb73b30f1202f88 100644 (file)
@@ -1,6 +1,4 @@
 define apt::setting (
-  $setting_type,
-  $base_name  = $title,
   $priority   = 50,
   $ensure     = file,
   $source     = undef,
@@ -18,13 +16,17 @@ define apt::setting (
     fail('apt::setting needs either of content or source')
   }
 
-  validate_re($setting_type, ['conf', 'pref', 'list'])
   validate_re($ensure,  ['file', 'present', 'absent'])
-  validate_string($base_name)
+
+  $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-'")
 
   unless is_integer($priority) {
     # need this to allow zero-padded priority.
-    validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer.')
+    validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer')
   }
 
   if $source {