ipfs-cookbook/resources/config.rb

27 lines
857 B
Ruby

require 'json'
require 'mixlib/shellout'
property :key, String, name_property: true
property :value, [String, Hash, Array, TrueClass, FalseClass, Integer], required: true
action :create do
include_recipe 'ipfs'
execute "ipfs config --json #{new_resource.key} '#{JSON.generate(new_resource.value)}'" do
environment 'IPFS_PATH' => '/home/ipfs/.ipfs'
user 'ipfs'
not_if do
cmd = Mixlib::ShellOut.new('ipfs', 'config', new_resource.key,
user: 'ipfs',
env: { 'IPFS_PATH' => '/home/ipfs/.ipfs' })
cmd.run_command
begin
JSON.parse(cmd.stdout) == JSON.parse(JSON.generate(new_resource.value))
rescue JSON::ParserError
cmd.stdout.include?(new_resource.value.to_s)
end
end
notifies :restart, 'service[ipfs]', :delayed
end
end