defmodule Kameleoon.Data.ApplicationVersion do @moduledoc """ Represents the version of the application. Supports semantic versioning: major, major.minor, or major.minor.patch. """ alias Kameleoon.Data.Validation @enforce_keys [:version] defstruct [:version] @type t :: %__MODULE__{version: String.t()} @spec new!(String.t()) :: t() def new!(version) do %__MODULE__{version: Validation.non_empty_string!(version, :version)} end end