Knife-Zero doesn't include Berkshelf support, so vendoring everything in the repo is convenient again
		
			
				
	
	
		
			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
 |