Skip to main content

lib/systemd/job_status.ex

defmodule Systemd.JobStatus do
  @moduledoc """
  Runtime job information returned by systemd's `ListJobs` D-Bus method.
  """

  @enforce_keys [:id, :unit, :type, :state, :job_path, :unit_path]
  @type t :: %__MODULE__{
          id: non_neg_integer(),
          unit: String.t(),
          type: String.t(),
          state: String.t(),
          job_path: String.t(),
          unit_path: String.t()
        }

  defstruct [:id, :unit, :type, :state, :job_path, :unit_path]

  @doc false
  @spec from_dbus(tuple() | list()) :: t()
  def from_dbus({id, unit, type, state, job_path, unit_path}) do
    from_dbus([id, unit, type, state, job_path, unit_path])
  end

  def from_dbus([id, unit, type, state, job_path, unit_path]) do
    %__MODULE__{
      id: id,
      unit: unit,
      type: type,
      state: state,
      job_path: job_path,
      unit_path: unit_path
    }
  end
end