- # Need anchor to provide containment for dependencies.
- anchor { "apt::source::${name}":
- require => Class['apt::update'],
+ 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')
+ }
+ create_resources('apt::pin', { "${name}" => $_pin })
+ }
+
+ # We do not want to remove keys when the source is absent.
+ if $key and ($ensure == 'present') {
+ if is_hash($_key) {
+ apt::key { "Add key: ${$_key['id']} from Apt::Source ${title}":
+ ensure => present,
+ id => $_key['id'],
+ server => $_key['server'],
+ content => $_key['content'],
+ source => $_key['source'],
+ options => $_key['options'],
+ key_server => $_key['key_server'],
+ key_content => $_key['key_content'],
+ key_source => $_key['key_source'],
+ before => $_before,
+ }
+ }