--- /dev/null
+class aur::aura(
+) {
+ user { "aur-builder":
+ name => "aur-builder",
+ system => true,
+ ensure => "present"
+ }
+
+ exec { 'pacman-base-devel':
+ command => '/usr/bin/pacman -S base-devel --needed --noconfirm',
+ unless => '/usr/bin/pacman -Qo aura',
+ logoutput => 'on_failure',
+ }
+
+ ensure_packages(['gmp', 'pcre', 'abs'], { 'install_options' => '--asdeps' })
+
+ exec { 'aur::aura':
+ cwd => "/tmp",
+ path => "/usr/bin",
+ command => 'curl -o /tmp/aur.sh aur.sh && chmod +x /tmp/aur.sh && /tmp/aur.sh aura-bin && mv /tmp/aura-bin/aura-bin-*-x86_64.pkg.tar.xz /tmp/aura-bin-x86_64.pkg.tar.xz && rm /tmp/aur.sh && rm -rf /tmp/aura-bin',
+ user => "aur-builder",
+ unless => '/usr/bin/pacman -Qo aura',
+ require => Exec['pacman-base-devel'],
+ logoutput => 'on_failure',
+ }
+
+ package { 'aura-bin':
+ ensure => "present",
+ source => "/tmp/aura-bin-x86_64.pkg.tar.xz",
+ notify => Exec['aur::aura::cleanup']
+ }
+
+ exec { 'aur::aura::cleanup':
+ path => "/usr/bin/",
+ command => "rm -f /tmp/aura-bin-x86_64.pkg.tar.xz",
+ refreshonly => true
+ }
+}
--- /dev/null
+define aur::install (
+ $ensure = 'present',
+) {
+
+ case $ensure {
+ 'present': {
+ exec { "pacman::aur::install::${name}":
+ require => Class[aur::aura],
+ command => "/usr/bin/aura -A ${name}",
+ unless => "/usr/bin/aura -Qk ${name}",
+ logoutput => 'on_failure',
+ timeout => 1800,
+ }
+ }
+ 'absent': {
+ exec { "pacman::aur::remove::${name}":
+ require => Class[aur::aura],
+ command => "/usr/bin/aura -Rs ${name}",
+ onlyif => "/usr/bin/aura -Qi ${name}",
+ logoutput => 'on_failure',
+ }
+ }
+ default: {
+ fail("Pacman::Aur[${name}] ensure parameter must be either 'present' or 'absent'")
+ }
+
+ }
+}