service.rb
module Service
extend self
def list
@list ||= begin
Dir['scripts/*\_start.sh'].inject({}) do |h, path|
name = path.scan(/scripts\/(.*)\_start/)[0][0]
h[name] = File.read(path).split("\n")[1].scan(/title:\s(.*)/i)[0].try(:first) || name if name and !h[name]
h
end
end
end
def exec(name, action, &block)
script_path = "scripts/#{name}_#{action}.sh"
raise "Missing script" unless File.exists?(script_path)
command = "sh #{script_path}"
if action == 'status'
em_system(command, &block)
else
system(command << " &")
yield("", 0)
end
end
def em_system(cmd, &block)
EM.system(cmd) do |output, status|
block.call(output, status.exitstatus)
end
end
end