Module: Capsaicin::Service::LSB

Included in:
Capsaicin::Service
Defined in:
lib/capsaicin/service/lsb.rb

Constant Summary collapse

DEFAULT_ACTIONS =
%w(status start stop restart)

Instance Method Summary collapse

Instance Method Details

#lsb(id, *args) ⇒ Object

Defines a recipe to control a generic LSB service.


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/capsaicin/service/lsb.rb', line 14

def lsb(id,*args)
  options = Hash===args.last ? args.pop : {}

  basedir = options.delete(:basedir)
  svc_name = id.to_s
  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
    svc_id = Symbol === id ? id.to_s : id.split(':').last

    desc "#{svc_desc}: #{SVC_ACTION_CAPTIONS[:status]}" if svc_desc
    task :default, options do
      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
        _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
end

#lsb?(id, basedir = "/etc/init.d") ⇒ Boolean

Check for the existance of a generic LSB initscript.

Returns:

  • (Boolean)

8
9
10
# File 'lib/capsaicin/service/lsb.rb', line 8

def lsb?(id, basedir="/etc/init.d")
  files.exists? "#{basedir}/#{id.to_s.split(':').last}"
end