defmodule Oi.MixProject do
use Mix.Project
@version "0.6.3"
def project do
[
app: :oi,
version: @version,
elixir: "~> 1.17",
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
deps: deps(),
package: package(),
docs: [
main: "readme",
extras: ["README.md", "CHANGELOG.md"],
groups_for_modules: [
Core: [Oi, Oi.Compiled, Oi.Result],
DSL: [Oi.Flowgraph, Oi.Step],
Compile: [Oi.Compile.Bundle, Oi.Compile.Planning],
Dispatch: [
Oi.Dispatch.Config,
Oi.Dispatch.Drafting,
Oi.Dispatch.Orchestrator,
Oi.Dispatch.Worker
],
Topology: [
Oi.Topology.Cluster,
Oi.Topology.Graph,
Oi.Topology.Graph.Node,
Oi.Topology.Graph.Edge,
Oi.Topology.Graph.PortRef
],
Executors: [Oi.Executor, Oi.Executor.Sync, Oi.Executor.TaskSup],
Adapters: [Oi.Adapters],
Runtime: [
Oi.Runtime.Session,
Oi.Runtime.Session.Instances,
Oi.Runtime.Registry
]
]
],
description: "Lightweight Orchid integration layer with pluggable execution strategies",
test_coverage: [
ignore_modules: [
~r/.*Test.*/
]
]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
def application do
observer = if Mix.env() == :dev, do: [:observer, :wx], else: []
[
extra_applications: [:logger] ++ observer,
mod: {Oi.Application, []}
]
end
defp deps do
[
# Orchid related.
{:orchid, "~> 0.6"},
{:orchid_symbiont, "~> 0.2", optional: true},
{:orchid_intervention, "~> 0.2", optional: true},
{:orchid_stratum, "~> 0.2", optional: true},
# Package
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false}
]
end
defp package do
[
maintainers: ["awachestnut"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/SynapticStrings/Oi"},
source_ref: @version,
files: ~w(lib .formatter.exs mix.exs README.md CHANGELOG.md)
]
end
end