lib/bzip2_decomp.ex

defmodule Bzip2 do
  version = Mix.Project.config()[:version]

  use RustlerPrecompiled,
    otp_app: :bzip2_decomp,
    base_url: "https://github.com/Moosieus/bzip2_decomp/releases/download/v#{version}",
    force_build: System.get_env("RUSTLER_BUILD") in ["1", "true"],
    version: version

  @spec decompress(binary()) :: binary() | {:error, String.t()}
  def decompress(_), do: :erlang.nif_error(:nif_not_loaded)

  @spec decompress!(binary()) :: binary()
  def decompress!(data) when is_binary(data) do
    case decompress(data) do
      {:error, reason} -> raise reason
      result -> result
    end
  end
end