Packages
git_hub_actions
0.2.24
0.4.2
0.4.1
0.4.0
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A little tool to write GitHub actions in Elixir
Current section
Files
Jump to
Current section
Files
lib/git_hub_actions/project.ex
defmodule GitHubActions.Project do
@moduledoc """
A thin wrapper for `Mix.Project` to access the `config`.
"""
alias GitHubActions.Access
@type key :: atom()
@type keys :: [atom()]
@type default :: any()
@type value :: any()
@doc """
Returns the Elixir version of the current project.
## Examples
iex> Project.elixir()
"~> 1.13"
"""
@spec elixir :: String.t()
def elixir do
fetch!(:elixir)
end
@doc """
Returns `true` if the given `dep` is part of the project.
## Examples
iex> Project.has_dep?(:credo)
true
iex> Project.has_dep?(:datix)
false
"""
@spec has_dep?(atom()) :: boolean()
def has_dep?(dep) do
Enum.any?(fetch!(:deps), fn
{^dep, _requirement, _opts} -> true
_dep -> false
end)
end
@doc """
Returns the value for given `keys` from the project config.
## Examples
iex> Project.get(:app)
:git_hub_actions
iex> Project.get(:unknown, 42)
42
iex> Project.get([:test_coverage, :tool])
ExCoveralls
"""
@spec get(key() | keys(), default()) :: value()
def get(keys, default \\ nil), do: Access.get(config(), keys, default)
@doc """
Returns the value for given `keys` from the project config, in a tuple.
## Examples
iex> Project.fetch(:app)
{:ok, :git_hub_actions}
iex> Project.fetch(:unknown)
:error
iex> Project.fetch([:test_coverage, :tool])
{:ok, ExCoveralls}
"""
@spec fetch(key() | keys()) :: {:ok, value()} | :error
def fetch(keys), do: Access.fetch(config(), keys)
@doc """
Returns the value for given `keys` from the project config, raises an error
if `keys` are not available.
## Examples
iex> Project.fetch!(:app)
:git_hub_actions
iex> Project.fetch!([:test_coverage, :tool])
ExCoveralls
"""
@spec fetch!(key() | keys()) :: value()
def fetch!(keys), do: Access.fetch!(config(), keys)
defdelegate config, to: Mix.Project
end