Index: modules/nodejs/manifests/package.pp |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/modules/nodejs/manifests/package.pp |
@@ -0,0 +1,57 @@ |
+# == Type: nodejs::package |
+# |
+# Manage nodejs packages. |
+# |
+# === Parameters: |
+# |
+# [*ensure*] |
+# Translated directly into the state of installed/uninstalled |
+# package. |
+# |
+# [*options*] |
+# A list of zero or more options to install the package. |
+# |
+define nodejs::package ( |
+ $ensure = 'present', |
+ $options = [], |
mathias
2017/07/11 22:28:03
Are you sure we still need that $options parameter
|
+) { |
+ |
+ $check_command = [ |
+ "npm", "list", |
+ "--global", |
+ "--parseable", |
+ $name, |
+ ] |
+ |
+ if ensure_state($ensure) { |
+ $command = [ |
+ "npm", |
+ "install", "--global", |
+ $options, |
+ $title, |
+ ] |
+ |
+ $unless = shellquote($check_command) |
+ $onlyif = undef |
+ } |
+ else { |
+ $command = [ |
+ "npm", |
+ "uninstall", "--global", |
+ $options, |
+ $title, |
+ ] |
+ |
+ $unless = undef |
+ $onlyif = shellquote($check_command) |
+ } |
+ |
+ exec {"state_$title": |
mathias
2017/07/11 22:28:03
Not a good title, no association with the type def
|
+ path => ["/usr/bin"], |
mathias
2017/07/11 22:28:03
Not sure but this path seems too short. I am sure
|
+ command => shellquote($command), |
+ require => Package['nodejs'], |
+ onlyif => $onlyif, |
+ unless => $unless, |
+ } |
+} |
+ |