- # We do not want to remove keys when the source is absent.
- if ($key != false) and ($ensure == 'present') {
- apt::key { "Add key: ${key} from Apt::Source ${title}":
- ensure => present,
- key => $key,
- key_server => $key_server,
- key_content => $key_content,
- key_source => $key_source,
- before => File["${name}.list"],
+ $_include = merge($::apt::params::include_defaults, $_deprecated_include, $include)
+
+ $_deprecated_key = {
+ 'key_server' => $key_server,
+ 'key_content' => $key_content,
+ 'key_source' => $key_source,
+ }
+
+ if $key {
+ if is_hash($key) {
+ unless $key['id'] {
+ fail('key hash must contain at least an id entry')
+ }
+ $_key = merge($::apt::params::source_key_defaults, $_deprecated_key, $key)
+ } else {
+ validate_string($key)
+ $_key = merge( { 'id' => $key }, $_deprecated_key)
+ }
+ }
+
+ apt::setting { "list-${name}":
+ ensure => $ensure,
+ content => template('apt/_header.erb', 'apt/source.list.erb'),
+ }
+
+ if $pin {
+ if is_hash($pin) {
+ $_pin = merge($pin, { 'ensure' => $ensure, 'before' => $_before })
+ } elsif (is_numeric($pin) or is_string($pin)) {
+ $url_split = split($location, '/')
+ $host = $url_split[2]
+ $_pin = {
+ 'ensure' => $ensure,
+ 'priority' => $pin,
+ 'before' => $_before,
+ 'origin' => $host,
+ }
+ } else {
+ fail('Received invalid value for pin parameter')