lib/capsaicin/service/lsb.rb in capsaicin-0.1.4 vs lib/capsaicin/service/lsb.rb in capsaicin-0.1.5

- old
+ new

@@ -19,25 +19,29 @@ svc_desc = next_description(:reset) || (svc_name.capitalize unless options.delete(:hide)) svc_actions = DEFAULT_ACTIONS svc_actions += args.pop if Array === args.last namespace id do - case args.first - when String; id = args.shift.intern - when Symbol; id = args.shift - end - svc_cmd = "#{basedir || '/etc/init.d'}/#{id.to_s.split(':').last}" + svc_id = Symbol === id ? id.to_s : id.split(':').last desc "#{svc_desc}: #{SVC_ACTION_CAPTIONS[:status]}" if svc_desc task :default, options do - send(basedir ? run_method : :sudo, "#{svc_cmd} status") + status end - + svc_cmd = Proc.new do + case basedir + when String; basedir + '/' + svc_id + when NilClass; '/etc/init.d/' + svc_id + when Symbol; fetch(basedir) + '/' + svc_id + when Proc; basedir.call(svc_id) + end + end svc_actions.each do |svc_action| svc_action = svc_action.intern if String === svc_action desc "#{svc_desc}: #{SVC_ACTION_CAPTIONS[svc_action]}" if svc_desc task svc_action, options do - send(basedir ? run_method : :sudo, "#{svc_cmd} #{svc_action}") + _run_method = basedir ? fetch(:run_method, :run) : :sudo + send(_run_method, "#{svc_cmd.call} #{svc_action}") end end instance_eval { yield } if block_given? end