defmodule Systemd.Unit do
@moduledoc """
Runtime information for a systemd unit returned by `ListUnits`.
"""
@type t :: %__MODULE__{
name: String.t(),
description: String.t(),
load_state: String.t(),
active_state: String.t(),
sub_state: String.t(),
followed: String.t(),
object_path: String.t(),
job_id: non_neg_integer(),
job_type: String.t(),
job_path: String.t()
}
@enforce_keys [:name]
defstruct [
:name,
:description,
:load_state,
:active_state,
:sub_state,
:followed,
:object_path,
:job_id,
:job_type,
:job_path
]
@doc false
@spec new(keyword()) :: t()
def new(attrs) when is_list(attrs), do: struct!(__MODULE__, attrs)
@doc false
@spec from_list_units_row(tuple() | list()) :: t()
def from_list_units_row(
{name, description, load_state, active_state, sub_state, followed, object_path, job_id,
job_type, job_path}
) do
%__MODULE__{
name: name,
description: description,
load_state: load_state,
active_state: active_state,
sub_state: sub_state,
followed: followed,
object_path: object_path,
job_id: job_id,
job_type: job_type,
job_path: job_path
}
end
def from_list_units_row([
name,
description,
load_state,
active_state,
sub_state,
followed,
object_path,
job_id,
job_type,
job_path
]) do
from_list_units_row(
{name, description, load_state, active_state, sub_state, followed, object_path, job_id,
job_type, job_path}
)
end
end