lib/kameleoon/data/application_version.ex
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