Files
chef/cookbooks/nodejs/resources/nodejs_npm_packages.rb
T

47 lines
1.1 KiB
Ruby

# frozen_string_literal: true
provides :nodejs_npm_packages
unified_mode true
property :packages, Array, default: []
default_action :install
action :install do
new_resource.packages.each do |pkg|
package_properties = normalize_package(pkg)
pkg_action = package_properties.delete(:action) || :install
pkg_name = package_properties.delete(:package)
npm_package "nodejs_npm-#{pkg_name}-#{pkg_action}" do
package pkg_name
package_properties.each do |property_name, property_value|
send(property_name, property_value)
end
action pkg_action.to_sym
end
end
end
action :remove do
new_resource.packages.each do |pkg|
package_properties = normalize_package(pkg)
pkg_name = package_properties[:package]
npm_package "nodejs_npm-#{pkg_name}-remove" do
package pkg_name
action :remove
end
end
end
action_class do
def normalize_package(pkg)
pkg.each_with_object({}) do |(key, value), memo|
property_name = key.to_sym
property_name = :package if property_name == :name
memo[property_name] = value
end
end
end