defmodule Kvasir.Dev.MixProject do use Mix.Project def project do [ app: :kvasir_dev, description: "Kvasir development helper.", version: "0.0.1", 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