(#11966) apt module containment for apt_update.
[puppet-modules/puppetlabs-apt.git] / manifests / ppa.pp
1 # ppa.pp
2
3 define apt::ppa(
4   $release = $::lsbdistcodename
5 ) {
6
7   Class['apt'] -> Apt::Ppa[$title]
8
9   include apt::params
10   include apt::update
11
12   $sources_list_d = $apt::params::sources_list_d
13
14   if ! $release {
15     fail('lsbdistcodename fact not available: release parameter required')
16   }
17
18
19   $filename_without_slashes = regsubst($name,'/','-','G')
20   $filename_without_ppa = regsubst($filename_without_slashes, '^ppa:','','G')
21   $sources_list_d_filename = "${filename_without_ppa}-${release}.list"
22
23   if ! defined(Package['python-software-properties']) {
24     package { 'python-software-properties': }
25   }
26
27   exec { "add-apt-repository-${name}":
28     command => "/usr/bin/add-apt-repository ${name}",
29     creates => "${sources_list_d}/${sources_list_d_filename}",
30     require => Package['python-software-properties'],
31     notify  => Exec['apt_update'],
32   }
33
34   file { "${sources_list_d}/${sources_list_d_filename}":
35     ensure  => file,
36     require => Exec["add-apt-repository-${name}"];
37   }
38
39   # Need anchor to provide containment for dependencies.
40   anchor { "apt::ppa::${name}":
41     require => Class['apt::update'],
42   }
43 }
44