Merge pull request #57 from nanliu/tb/style
[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   $filename_without_slashes = regsubst($name,'/','-','G')
19   $filename_without_ppa     = regsubst($filename_without_slashes, '^ppa:','','G')
20   $sources_list_d_filename  = "${filename_without_ppa}-${release}.list"
21
22   if ! defined(Package['python-software-properties']) {
23     package { 'python-software-properties': }
24   }
25
26   exec { "add-apt-repository-${name}":
27     command => "/usr/bin/add-apt-repository ${name}",
28     creates => "${sources_list_d}/${sources_list_d_filename}",
29     require => Package['python-software-properties'],
30     notify  => Exec['apt_update'],
31   }
32
33   file { "${sources_list_d}/${sources_list_d_filename}":
34     ensure  => file,
35     require => Exec["add-apt-repository-${name}"],
36   }
37
38   # Need anchor to provide containment for dependencies.
39   anchor { "apt::ppa::${name}":
40     require => Class['apt::update'],
41   }
42 }
43