Get list of all daemons from the file ‘/etc/rc.conf’. Mutiple lines and background form are supported. Example:
DAEMONS=(\ foobar \ @example \ !net \ )
# File lib/chef/provider/service/arch.rb, line 44 def daemons entries = [] if ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/) entries += $1.gsub(/\\?[\r\n]/, ' ').gsub(/# *[^ ]+/,' ').split(' ') if $1.length > 0 end yield(entries) if block_given? entries end
# File lib/chef/provider/service/arch.rb, line 89 def disable_service() new_daemons = [] entries = daemons if entries.include?("!#{new_resource.service_name}") # exists and disabled # new_daemons += entries else if entries.include?(new_resource.service_name) or entries.include?("@#{new_resource.service_name}") # exists but enabled (or enabled as a back-ground service) # FIXME: Does arch support !@foobar ? entries.each do |daemon| if [new_resource.service_name, "@#{new_resource.service_name}"].include?(daemon) new_daemons << "!#{new_resource.service_name}" else new_daemons << daemon end end end update_daemons(new_daemons) end end
# File lib/chef/provider/service/arch.rb, line 63 def enable_service() new_daemons = [] entries = daemons if entries.include?(new_resource.service_name) or entries.include?("@#{new_resource.service_name}") # exists and already enabled (or already enabled as a background service) # new_daemons += entries else if entries.include?("!#{new_resource.service_name}") # exists but disabled entries.each do |daemon| if daemon == "!#{new_resource.service_name}" new_daemons << new_resource.service_name else new_daemons << daemon end end else # does not exist new_daemons += entries new_daemons << new_resource.service_name end update_daemons(new_daemons) end end
# File lib/chef/provider/service/arch.rb, line 28 def load_current_resource raise Chef::Exceptions::Service, "Could not find /etc/rc.conf" unless ::File.exists?("/etc/rc.conf") raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless ::File.read("/etc/rc.conf").match(/DAEMONS=\((.*)\)/) super @current_resource.enabled(daemons.include?(@current_resource.service_name)) @current_resource end
FIXME: Multiple entries of DAEMONS will cause very bad results :)
# File lib/chef/provider/service/arch.rb, line 56 def update_daemons(entries) content = ::File.read("/etc/rc.conf").gsub(/DAEMONS=\((.*)\)/, "DAEMONS=(#{entries.join(' ')})") ::File.open("/etc/rc.conf", "w") do |f| f.write(content) end end
Generated with the Darkfish Rdoc Generator 2.