Skip to main content

lib/systemd/transient_unit/aux_unit.ex

defmodule Systemd.TransientUnit.AuxUnit do
  @moduledoc """
  Auxiliary transient unit passed to `StartTransientUnit`.
  """

  alias Systemd.TransientUnit.Property

  @type t :: %__MODULE__{
          name: String.t(),
          properties: [Property.t()]
        }

  @enforce_keys [:name]
  defstruct [:name, properties: []]

  @doc """
  Builds an auxiliary transient unit.
  """
  @spec new(String.t(), [Property.t()]) :: t()
  def new(name, properties \\ []) when is_binary(name) and is_list(properties) do
    %__MODULE__{name: name, properties: properties}
  end

  @doc false
  @spec to_dbus(t()) :: [String.t() | list()]
  def to_dbus(%__MODULE__{name: name, properties: properties}) do
    [name, Enum.map(properties, &Property.to_dbus/1)]
  end
end