diff options
Diffstat (limited to 'modules/package/manifests/cargo.pp')
-rw-r--r-- | modules/package/manifests/cargo.pp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/modules/package/manifests/cargo.pp b/modules/package/manifests/cargo.pp new file mode 100644 index 0000000..2f599b9 --- /dev/null +++ b/modules/package/manifests/cargo.pp @@ -0,0 +1,39 @@ +define package::cargo($package, $user, $ensure, $home=undef) { + $_home = $home ? { + undef => $user ? { + 'root' => '/root', + default => "/home/$user", + }, + default => $home, + } + + case $ensure { + 'installed': { + exec { "cargo install $package for $user": + provider => "shell", + command => "cargo install $package", + unless => "cargo install --list | grep -q '^$package'", + user => $user, + timeout => 3600, + require => [ + User[$user], + Rust::User[$user], + File["${_home}/.cargo"], + ]; + } + } + 'absent': { + exec { "cargo uninstall $package for $user": + provider => "shell", + command => "cargo uninstall $package", + onlyif => "cargo install --list | grep -q '^$package'", + user => $user, + require => [ + User[$user], + Rust::User[$user], + File["${_home}/.cargo"], + ]; + } + } + } +} |