defmodule ExPdfInspector.MixProject do use Mix.Project @version "0.2.0" @source_url "https://github.com/franzinBr/ex_pdf_inspector" def project do [ app: :ex_pdf_inspector, version: @version, elixir: "~> 1.15", start_permanent: Mix.env() == :prod, compilers: Mix.compilers() ++ [:cleanup_pdf_inspector_artifact], deps: deps(), description: description(), package: package(), name: "ExPdfInspector", source_url: @source_url, homepage_url: @source_url, docs: docs() ] end # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger] ] end # Run "mix help deps" to learn about dependencies. defp deps do [ {:rustler, "~> 0.38.0", runtime: false}, {:ex_doc, "~> 0.40", only: :dev, runtime: false} ] end defp description do "Elixir NIF bindings for Firecrawl's pdf-inspector. Classify PDFs, route pages to OCR, extract positioned text and generate Markdown locally" end defp package do [ licenses: ["MIT"], links: %{ "GitHub" => @source_url, "Firecrawl pdf-inspector" => "https://github.com/firecrawl/pdf-inspector" }, files: ~w( lib native docs Cargo.toml Cargo.lock mix.exs README.md CHANGELOG.md LICENSE ) ] end defp docs do [ main: "readme", extras: [ "README.md", "CHANGELOG.md", "docs/getting-started.md", "docs/processing-and-options.md", "LICENSE" ], groups_for_extras: [ Guides: ~r/docs\// ], source_ref: "v#{@version}" ] end end defmodule Mix.Tasks.Compile.CleanupPdfInspectorArtifact do use Mix.Task.Compiler @recursive true @impl Mix.Task.Compiler def run(_args) do artifact = Path.join([Mix.Project.app_path(), "priv", "native", "pdf_inspector.so"]) case File.rm(artifact) do :ok -> {:ok, []} {:error, :enoent} -> {:noop, []} {:error, reason} -> {:error, [{artifact, "could not remove invalid artifact: #{reason}"}]} end end end