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