defmodule Systemd.UnitState do
@moduledoc """
Common state properties for a systemd unit object.
"""
@type t :: %__MODULE__{
id: String.t() | nil,
load_state: String.t() | nil,
active_state: String.t() | nil,
sub_state: String.t() | nil,
main_pid: non_neg_integer() | nil,
fragment_path: String.t() | nil
}
defstruct [:id, :load_state, :active_state, :sub_state, :main_pid, :fragment_path]
@doc false
@spec from_properties(map()) :: t()
def from_properties(properties) when is_map(properties) do
%__MODULE__{
id: Map.get(properties, "Id"),
load_state: Map.get(properties, "LoadState"),
active_state: Map.get(properties, "ActiveState"),
sub_state: Map.get(properties, "SubState"),
main_pid: Map.get(properties, "MainPID"),
fragment_path: Map.get(properties, "FragmentPath")
}
end
end