Akd v0.2.1 Akd.DestinationResolver View Source

This module defines helper functions which can be used to resolve a destination for based on deployment and the destination type

Link to this section Summary

Functions

This function takes a destination variable and a Deployment.t struct

Link to this section Functions

Link to this function resolve(dest, deployment) View Source
resolve(Akd.Destination.t() | :build | :publish | :local, Akd.Deployment.t()) :: Akd.Destination.t()

This function takes a destination variable and a Deployment.t struct.

destination variable could be either a Destination.t struct or one of the atoms: :build, :publish, :local

This function returns a resolved Destination.t struct.

Examples

When a Destination.t struct is passed:

iex> destination = Akd.Destination.local()
iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("."),
...> publish_to: Akd.Destination.local("."),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.DestinationResolver.resolve(destination, deployment)
%Akd.Destination{user: :current, host: :local, path: "."}

When :build is passed:

iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("build"),
...> publish_to: Akd.Destination.local("publish"),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.DestinationResolver.resolve(:build, deployment)
%Akd.Destination{user: :current, host: :local, path: "build"}

When :publish is passed:

iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("build"),
...> publish_to: Akd.Destination.local("publish"),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.DestinationResolver.resolve(:publish, deployment)
%Akd.Destination{user: :current, host: :local, path: "publish"}

When :local is passed:

iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("build"),
...> publish_to: Akd.Destination.local("publish"),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.DestinationResolver.resolve(:local, deployment)
%Akd.Destination{user: :current, host: :local, path: "."}