Skip to main content

mix.exs

defmodule FastestTiktoken.MixProject do
  use Mix.Project

  def project do
    [
      app: :fastest_tiktoken,
      version: "0.1.1",
      description: "Fast Elixir bindings for the pure-Rust tiktoken crate",
      source_url: "https://github.com/caudena/fastest_tiktoken",
      homepage_url: "https://github.com/caudena/fastest_tiktoken",
      elixir: "~> 1.19",
      start_permanent: Mix.env() == :prod,
      elixirc_paths: elixirc_paths(Mix.env()),
      deps: deps(),
      package: package(),
      docs: docs()
    ]
  end

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

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_env), do: ["lib"]

  defp deps do
    [
      {:ex_doc, "~> 0.40", only: :dev, runtime: false},
      {:rustler, "~> 0.37.3", optional: true},
      {:rustler_precompiled, "~> 0.9"}
    ]
  end

  defp docs do
    public_modules = public_modules()

    [
      main: "readme",
      source_ref: "master",
      source_url: "https://github.com/caudena/fastest_tiktoken",
      extras: [
        "CHANGELOG.md",
        "README.md",
        "docs/usage.md",
        "docs/parity-and-performance.md",
        "LICENSE"
      ],
      groups_for_extras: [
        "Start Here": ["README.md", "CHANGELOG.md"],
        Guides: [
          "docs/usage.md",
          "docs/parity-and-performance.md"
        ]
      ],
      groups_for_modules: [
        "Core API": [
          FastestTiktoken
        ]
      ],
      filter_modules: fn module, _metadata -> module in public_modules end
    ]
  end

  defp package do
    [
      name: "fastest_tiktoken",
      files: package_files(),
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/caudena/fastest_tiktoken"
      }
    ]
  end

  defp package_files do
    [
      ".formatter.exs",
      "CHANGELOG.md",
      "LICENSE",
      "README.md",
      "docs",
      "lib",
      "mix.exs",
      "native/fastest_tiktoken/.cargo",
      "native/fastest_tiktoken/src",
      "native/fastest_tiktoken/Cargo*"
    ] ++ Enum.sort(Path.wildcard("checksum-*.exs"))
  end

  defp public_modules do
    [
      FastestTiktoken
    ]
  end
end