require 'json' require 'mixlib/shellout' resource_name :BK_atom default_action :config action :config do manage_atom end action_class do def manage_atom case node['platform_family'] when 'mac_os_x' manage_atom_osx end end def manage_atom_osx prefs = node['BK_atom_config'] prefs = prefs.reject { |_k, v| v.nil? } return if prefs.empty? current_user = Mixlib::ShellOut.new("logname") current_user.run_command current_user = current_user.stdout.strip atom_prefs_dir = "/Users/#{current_user}/.atom" directory atom_prefs_dir do owner current_user mode '0755' recursive true action :create end file atom_prefs_dir + '/config.cson' do owner current_user mode '0755' action :create content Chef::JSONCompat.to_json_pretty(prefs) end end end