Index: modules/nodejs/manifests/package.pp |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/modules/nodejs/manifests/package.pp |
@@ -0,0 +1,51 @@ |
+# == Type: nodejs::package |
+# |
+# Manage nodejs packages. |
+# |
+# === Parameters: |
+# |
+# [*ensure*] |
+# Translated directly into the state of installed/uninstalled |
+# package. |
+# |
+define nodejs::package ( |
+ $ensure = 'present', |
+) { |
+ |
+ $check_command = [ |
+ "npm", "list", |
+ "--global", |
+ "--parseable", |
+ $name, |
+ ] |
+ |
+ if ensure_state($ensure) { |
+ $command = [ |
+ "npm", |
+ "install", "--global", |
+ $title, |
+ ] |
+ |
+ $unless = shellquote($check_command) |
+ $onlyif = undef |
+ } |
+ else { |
+ $command = [ |
+ "npm", |
+ "uninstall", "--global", |
+ $title, |
+ ] |
+ |
+ $unless = undef |
+ $onlyif = shellquote($check_command) |
+ } |
+ |
+ exec {"nodejs_package_$title": |
+ path => ["/usr/bin", "/bin"], |
+ command => shellquote($command), |
+ require => Package['nodejs'], |
+ onlyif => $onlyif, |
+ unless => $unless, |
+ } |
+} |
+ |