defmodule PtcRunner.MixProject do use Mix.Project def project do [ app: :ptc_runner, version: "0.3.0", elixir: "~> 1.15", start_permanent: Mix.env() == :prod, elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), aliases: aliases(), name: "PtcRunner", description: "A BEAM-native Elixir library for Programmatic Tool Calling (PTC) with JSON and lispy DSLs (subset of Clojure). PTC lets LLMs generate small programs that orchestrate multiple tool calls and data transformations in code.", source_url: "https://github.com/andreasronge/ptc_runner", docs: docs(), package: package(), test_coverage: [ ignore_modules: [PtcRunner.TestSupport.LLMClient] ] ] end # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger] ] end def cli do [ preferred_envs: [precommit: :test] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] # Run "mix help deps" to learn about dependencies. defp deps do [ {:jason, "~> 1.4"}, {:nimble_parsec, "~> 1.4"}, {:stream_data, "~> 1.1", only: [:test, :dev]}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:ex_doc, "~> 0.31", only: :dev, runtime: false}, {:req_llm, "~> 1.0.0-rc", only: :test} ] end defp aliases do [ precommit: [ "format --check-formatted", "compile --force --warnings-as-errors", "credo --strict", "test --warnings-as-errors" ] ] end defp docs do [ main: "readme", extras: [ "README.md", "LICENSE", "docs/guide.md", "docs/ptc-json-specification.md", "docs/ptc-lisp-overview.md", "docs/ptc-lisp-specification.md", "docs/ptc-lisp-llm-guide.md", "CHANGELOG.md" ], before_closing_body_tag: &before_closing_body_tag/1 ] end defp before_closing_body_tag(:html) do """ """ end defp before_closing_body_tag(_), do: "" defp package do [ files: ~w(lib priv .formatter.exs mix.exs README.md LICENSE CHANGELOG.md), licenses: ["MIT"], links: %{ "GitHub" => "https://github.com/andreasronge/ptc_runner", "Changelog" => "https://github.com/andreasronge/ptc_runner/blob/main/CHANGELOG.md" } ] end end