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