Current section

Files

Jump to
kvasir_dev mix.exs
Raw

mix.exs

defmodule Kvasir.Dev.MixProject do
use Mix.Project
def project do
[
app: :kvasir_dev,
description: "Kvasir development helper.",
version: "0.0.2",
elixir: "~> 1.10",
start_permanent: Mix.env() == :prod,
deps: deps(),
package: package(),
# Docs
name: "kvasir",
source_url: "https://github.com/IanLuites/kvasir",
homepage_url: "https://github.com/IanLuites/kvasir",
docs: [
main: "readme",
extras: ["README.md"],
source_url: "https://github.com/IanLuites/kvasir"
]
]
end
def package do
[
name: :kvasir_dev,
maintainers: ["Ian Luites"],
licenses: ["MIT"],
files: [
# Elixir
"lib/kvasir/dev/downloader.ex",
"lib/kvasir/dev.ex",
"lib/kvasir/mix",
".formatter.exs",
"mix.exs",
"README*",
"LICENSE*"
],
links: %{
"GitHub" => "https://github.com/IanLuites/kvasir_dev"
}
]
end
def application do
[
extra_applications: [:logger]
]
end
@external_resource lock =
Enum.find(
[
Path.join(File.cwd!(), "../../.kvasir"),
Path.join(File.cwd!(), ".kvasir"),
Path.join(__DIR__, "../../../../.kvasir"),
Path.join(__DIR__, "../../.kvasir")
],
&File.exists?/1
)
@deps %{
"core" => ~w(jason msgpax poolboy utc_datetime)a,
"agent" => ~w()a,
"redis" => ~w(raditz)a,
"postgres" => ~w(postgrex)a
}
defp deps do
required = [
:common_x,
:httpx
| unquote(lock)
|> File.read!()
|> String.split("\n", trim: true)
|> Enum.map(&String.trim/1)
|> Enum.reject(&(&1 == ""))
|> Enum.map(&List.first(String.split(&1, ":")))
|> Enum.flat_map(&(@deps[&1] || []))
]
deps =
[
{:common_x, ">= 0.0.0"},
{:httpx, ">= 0.0.0"},
{:jason, "~> 1.1"},
{:msgpax, "~> 2.2"},
{:poolboy, "~> 1.5"},
{:utc_datetime, ">= 1.0.0"},
{:raditz, ">= 0.0.0"},
{:postgrex, "~> 0.15.1"}
]
|> Enum.map(fn {a, b} -> {a, b, optional: a not in required} end)
deps ++ [{:ex_doc, ">= 0.0.0", only: :dev, runtime: false}]
end
end