Module: WheneverSystemd::Formatters

Defined in:
lib/whenever_systemd/formatters.rb

Constant Summary collapse

ParamPair =
factory["%s=%s"].freeze
ParamKey =
-> (key) do
  key.to_s.split('_').map(&capitalize).join
end
ParamsHash =
-> (hash) do
  hash.transform_values(&hash_join_params)
end
IntervalMinutes =
factory["*:0/%{minutes}"]
IntervalHours =
factory["0/%{hours}:0/%{minutes}"] >> proc { |v| v.chomp("/0") }
IntervalSeconds =
factory["0:0:0/%d"]
NormalizeInterval =
{
  "daily" => "*-*-*"
}
Duration =
-> (freq) do
  case freq
  when 0...3600;     IntervalMinutes[freq.parts]  # 1 second to hour
  when 3600...86400; IntervalHours[freq.parts]    # 1 hour to day
  else               IntervalSeconds[freq.to_i]
  end
end
Freq =
-> (freq) do
  ActiveSupport::Duration === freq ? Duration[freq] : freq
end
Service =
ParamsHash >> factory["[Unit]\n%{unit}\n\n[Service]\n%{service}\n"]
Timer =
ParamsHash >> factory["[Unit]\n%{unit}\n\n[Timer]\n%{timer}\n\n[Install]\n%{install}\n"]
Target =
ParamsHash >> factory["[Unit]\n%{unit}\n\n[Install]\nWantedBy=timers.target\n"]
MaterializeUnit =
factory["cat > %{path}/%{filename} <<'EOF'\n%{content}\nEOF\n"]
MaterializeUnits =
proc do |list|
  list.map(&MaterializeUnit) * "\n"
end
DryUnit =
factory["# filepath: %{path}/%{filename}\n%{content}\n\n"]
DryUnits =
proc { |list| list.map(&DryUnit) * "\n" }