define apt::ppa($ensure = present) {
  $has_ppa = "/usr/bin/test -f /etc/apt/sources.list.d/`echo $name | cut -f2 -d: | tr / -`*list"
  case $ensure {
    present: {
      exec { "Add $name PPA":
        path        => "/usr/sbin:/usr/bin:/sbin:/bin",
        environment => "HOME=/root",
        command     => "add-apt-repository $name ; apt-get update",
        user        => "root",
        group       => "root",
        logoutput   => on_failure,
        unless      => "$has_ppa",
      }
    }
    absent:  {
      exec { "Add $name PPA":
        path        => "/usr/sbin:/usr/bin:/sbin:/bin",
        environment => "HOME=/root",
        command     => "add-apt-repository --remove $name ; apt-get update",
        user        => "root",
        group       => "root",
        logoutput   => on_failure,
        unless      => "$has_ppa",
      }
    }
    default: {
      fail "Invalid 'ensure' value '$ensure' for ppa"
    }
  }
}