Skip to main content

mix.exs

defmodule EgglogElixir.MixProject do
  use Mix.Project

  def project do
    [
      app: :egglog_elixir,
      version: "0.1.0",
      elixir: "~> 1.19",
      name: "EgglogElixir",
      description: "Thin Elixir wrapper around the native Rust egglog engine.",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      docs: docs(),
      package: package()
    ]
  end

  def application do
    [
      extra_applications: [:logger]
    ]
  end

  defp deps do
    [
      {:jason, "~> 1.4"},
      {:ex_doc, "~> 0.38", only: :dev, runtime: false},
      {:rustler, "~> 0.38.0", runtime: false}
    ]
  end

  defp docs do
    [
      main: "Egglog",
      extras: [
        "README.md",
        "CHANGELOG.md",
        "livebooks/getting_started.livemd",
        "livebooks/egglog-tutorial/README.md",
        "livebooks/egglog-tutorial/01-basics.livemd",
        "livebooks/egglog-tutorial/02-datalog.livemd",
        "livebooks/egglog-tutorial/03-analysis.livemd",
        "livebooks/egglog-tutorial/04-scheduling.livemd",
        "livebooks/egglog-tutorial/05-cost-model-and-extraction.livemd",
        "livebooks/egglog-tutorial/06-case-study.livemd"
      ],
      groups_for_extras: [
        Livebooks: ~r/livebooks/
      ]
    ]
  end

  defp package do
    [
      licenses: ["MIT"],
      links: %{
        "Upstream egglog" => "https://github.com/egraphs-good/egglog",
        "Tutorial" => "https://egraphs-good.github.io/egglog-tutorial/"
      },
      files: [
        ".formatter.exs",
        "CHANGELOG.md",
        "LICENSE",
        "README.md",
        "lib",
        "livebooks",
        "mix.exs",
        "native/egglog_nif/Cargo.lock",
        "native/egglog_nif/Cargo.toml",
        "native/egglog_nif/src"
      ]
    ]
  end
end