Current section
Files
Jump to
Current section
Files
lib/nf/app/utils.ex
defmodule Nf.App.Utils do
@moduledoc false
@moduledoc since: "0.4.0"
@doc """
Generate a semver number.
Returns a semantic version number like `1.2.3`.
"""
@spec semver_core() :: String.t()
def semver_core do
{major, minor, patch} = {0..10, 0..20, 1..30}
Enum.map_join([major, minor, patch], ".", &Enum.random/1)
end
@doc """
Generate a pre-release identifier.
Returns a pre-release identifier like `alpha.1`, `beta.2`, or `rc.3`.
"""
@spec semver_pre_release() :: String.t()
def semver_pre_release do
identifier = Enum.random(~w[alpha beta rc])
"#{identifier}.#{Enum.random(1..10)}"
end
@doc """
Generate a build number.
Returns a build number based on the date format `YYYYMMDD`.
"""
@spec semver_build_number() :: String.t()
def semver_build_number do
day_range = Enum.random(-365..365)
Date.utc_today()
|> Date.add(day_range)
|> Date.to_string()
|> String.replace("-", "")
end
end