lib/ex_sqlean.ex

defmodule ExSqlean do
  @moduledoc """
  Documentation for `ExSqlean`.
  """

  alias ExSqlean.CpuInfo

  @extensions [
    "crypto",
    "json1",
    "math",
    "memstat",
    "re",
    "series",
    "stats",
    "text",
    "unicode",
    "vsv"
  ]
  def extensions do
    @extensions
  end

  def path_for(extension) when extension in @extensions do
    Path.join(:code.priv_dir(:ex_sqlean), "#{arch_path()}/#{extension}")
  end

  def path_for(missing_ext) do
    raise(
      "Extension '#{missing_ext}' not available! Please pick one from #{inspect(@extensions)}."
    )
  end

  def arch_path() do
    case CpuInfo.fullinfo() do
      {:macos, "arm64"} -> "darwin-arm64"
      {:macos, "amd64"} -> "darwin-amd64"
      {:windows, "win32"} -> "windows-win32"
      {:windows, _} -> "windows-amd64"
      {:linux, _} -> "linux-amd64"
    end
  end
end