require 'runit-man/service_info'
require 'runit-man/partials'
require 'runit-man/utils'
require 'sinatra/content_for2'
require 'i18n'
module Helpers
include Rack::Utils
include Sinatra::Partials
include Sinatra::ContentFor2
alias_method :h, :escape_html
attr_accessor :even_or_odd_state
def host_name
Utils.host_name
end
def t(*args)
Utils.t(*args)
end
def service_infos
ServiceInfo.all
end
def files_to_view
RunitMan.files_to_view.map do |f|
File.symlink?(f) ? File.expand_path(File.readlink(f), File.dirname(f)) : f
end.select do |f|
File.readable?(f)
end.uniq.sort
end
def all_files_to_view
(files_to_view + service_infos.map do |service|
service.files_to_view
end.flatten).uniq.sort
end
def service_action(name, action, label, enabled = true)
partial :service_action, :locals => {
:name => name,
:action => action,
:label => label,
:enabled => enabled
}
end
def service_signal(name, signal, label)
partial :service_signal, :locals => {
:name => name,
:signal => signal,
:label => label
}
end
def log_link(name, options = {})
count = (options[:count] || 100).to_i
title = options[:title].to_s || count
blank = options[:blank] || false
hint = options[:hint].to_s || ''
raw = options[:raw] || false
hint = " title=\"#{h(hint)}\"" unless hint.empty?
blank = blank ? ' target="_blank"' : ''
"#{h(title)}"
end
def log_downloads_link(name)
"#{h(t('runit.services.log.downloads'))}…"
end
def even_or_odd
self.even_or_odd_state = !even_or_odd_state
even_or_odd_state
end
KILOBYTE = 1024
MEGABYTE = 1024 * KILOBYTE
GIGABYTE = 1024 * MEGABYTE
def human_bytes(bytes)
sign = (bytes >= 0) ? '' : '-'
suffix = 'b'
bytes = bytes.abs.to_f
if bytes > GIGABYTE
bytes /= GIGABYTE
suffix = 'Gb'
elsif bytes > MEGABYTE
bytes /= MEGABYTE
suffix = 'Mb'
elsif bytes > KILOBYTE
bytes /= KILOBYTE
suffix = 'Kb'
end
bytes = ((bytes * 100 + 0.5).to_i.to_f / 100)
"#{sign}#{bytes}#{t("runit.services.log.#{suffix}")}"
end
def stat_subst(s)
s.split(/\s/).map do |s|
if s =~ /(\w+)/
word = $1
if t("runit.services.table.subst.#{word}") !~ /translation missing/
s.sub(word, t("runit.services.table.subst.#{word}"))
else
s
end
else
s
end
end.join(' ')
end
end