chef/cookbooks/nodejs/libraries/nodejs_helper.rb
2015-07-21 19:45:23 +02:00

34 lines
1.1 KiB
Ruby

module NodeJs
module Helper
def npm_dist
if node['nodejs']['npm']['url']
return { 'url' => node['nodejs']['npm']['url'] }
else
require 'open-uri'
require 'json'
result = JSON.parse(URI.parse("https://registry.npmjs.org/npm/#{node['nodejs']['npm']['version']}").read, :max_nesting => false)
ret = { 'url' => result['dist']['tarball'], 'version' => result['_npmVersion'], 'shasum' => result['dist']['shasum'] }
Chef::Log.debug("Npm dist #{ret}")
return ret
end
end
def npm_list(path = nil)
require 'json'
if path
cmd = Mixlib::ShellOut.new('npm list -json', :cwd => path)
else
cmd = Mixlib::ShellOut.new('npm list -global -json')
end
JSON.parse(cmd.run_command.stdout, :max_nesting => false)
end
def npm_package_installed?(package, version = nil, path = nil)
list = npm_list(path)['dependencies']
# Return true if package installed and installed to good version
(!list.nil?) && list.key?(package) && (version ? list[package]['version'] == version : true)
end
end
end