27 lines
857 B
Ruby
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
|