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