Skip to content

Instantly share code, notes, and snippets.

@jacques
Created October 16, 2012 22:20
Show Gist options
  • Save jacques/3902428 to your computer and use it in GitHub Desktop.
Save jacques/3902428 to your computer and use it in GitHub Desktop.
adds languages/nodejs to ohai plugins
diff --git a/lib/ohai/plugins/nodejs.rb b/lib/ohai/plugins/nodejs.rb
new file mode 100644
index 0000000..05acac0
--- /dev/null
+++ b/lib/ohai/plugins/nodejs.rb
@@ -0,0 +1,34 @@
+#
+# Author:: Jacques Marneweck (<[email protected]>)
+# Copyright:: Copyright (c) 2012 Jacques Marneweck. All rights reserved.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+provides "languages/nodejs"
+
+require_plugin "languages"
+
+output = nil
+
+nodejs = Mash.new
+
+status, stdout, stderr = run_command(:no_status_check => true, :command => "node -v")
+if status == 0
+ output = stdout.split
+ if output.length >= 1
+ nodejs[:version] = output[0][1..output[0].length]
+ end
+ languages[:nodejs] = nodejs if nodejs[:version]
+end
diff --git a/spec/ohai/plugins/nodejs_spec.rb b/spec/ohai/plugins/nodejs_spec.rb
new file mode 100644
index 0000000..fad4d40
--- /dev/null
+++ b/spec/ohai/plugins/nodejs_spec.rb
@@ -0,0 +1,51 @@
+#
+# Author:: Jacques Marneweck (<[email protected]>)
+# Copyright:: Copyright (c) Jacques Marneweck
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '/spec_helper.rb'))
+
+describe Ohai::System, "plugin nodejs" do
+
+ before(:each) do
+ @ohai = Ohai::System.new
+ @ohai[:languages] = Mash.new
+ @ohai.stub!(:require_plugin).and_return(true)
+ @status = 0
+ @stdout = "v0.8.11\n"
+ @stderr = ""
+ @ohai.stub!(:run_command).with({:no_status_check=>true, :command=>"node -v"}).and_return([@status, @stdout, @stderr])
+ end
+
+ it "should get the nodejs version from running node -v" do
+ @ohai.should_receive(:run_command).with({:no_status_check=>true, :command=>"node -v"}).and_return([0, "v0.8.11\n", ""])
+ @ohai._require_plugin("nodejs")
+ end
+
+ it "should set languages[:nodejs][:version]" do
+ @ohai._require_plugin("nodejs")
+ @ohai.languages[:nodejs][:version].should eql("0.8.11")
+ end
+
+ it "should not set the languages[:nodejs] tree up if node command fails" do
+ @status = 1
+ @stdout = "v0.8.11\n"
+ @stderr = ""
+ @ohai.stub!(:run_command).with({:no_status_check=>true, :command=>"node -v"}).and_return([@status, @stdout, @stderr])
+ @ohai._require_plugin("nodejs")
+ @ohai.languages.should_not have_key(:nodejs)
+ end
+end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment