#!/usr/bin/env ruby
require "cheffish/chef_run"

def post(resource_type, name, properties)
  chef_run = Cheffish::ChefRun.new
  begin
    r = chef_run.client.build_resource(resource_type, name) do
      properties.each { |attr, value| public_send(attr, value) }
    end
    chef_run.client.add_resource(r)
    chef_run.converge
    puts "CODE: #{chef_run.updated? ? 201 : 200}"
    puts "STDOUT: #{chef_run.stdout}\nSTDERR: #{chef_run.stderr}\nLOGS: #{chef_run.logs}"
  rescue
    puts "CODE: 400"
    puts "ERROR: #{$!}\nBACKTRACE: #{$!.backtrace}\nSTDOUT: #{chef_run.stdout}\nSTDERR: #{chef_run.stderr}\nLOGS: #{chef_run.logs}"
  end
end

post(ARGV.shift, ARGV.shift, Hash[*ARGV])
