Packages

A compliant and complete implementation of PASETO and PASERK.

Current section

Files

Jump to
pasexto mix.exs
Raw

mix.exs

defmodule Mix.Tasks.Compile.Pasexto do
use Mix.Task.Compiler
def run(_arg) do
mode =
if Mix.env() == :prod do
"--release=fast"
else
"--release=off"
end
config = Mix.Project.config()
app_priv = Path.join(Mix.Project.app_path(config), "priv")
result =
case System.cmd("zig", ["build", mode, "-p", app_priv], stderr_to_stdout: true) do
{result, 0} ->
result
{result, errcode} ->
Mix.raise(~s{Could not compile (exit status: #{errcode}).\n} <> result)
end
if match?({:unix, :darwin}, :os.type()) do
lib = Path.join(app_priv, "lib/libcrypto_ext_nif.so")
_ = :file.make_symlink("./libcrypto_ext_nif.dylib", lib)
end
IO.binwrite(result)
end
end
defmodule Pasexto.MixProject do
use Mix.Project
@source_url "https://github.com/alexkornitzer/pasexto"
@version "0.1.0"
def project do
[
app: :pasexto,
version: @version,
elixir: "~> 1.19",
compilers: [:pasexto] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
# Hex
description: "A compliant and complete implementation of PASETO and PASERK.",
package: package(),
# Docs
name: "pasexto",
docs: docs()
]
end
def application do
[
extra_applications: [:asn1, :crypto, :public_key]
]
end
defp deps do
[
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.40", only: :dev, runtime: false}
]
end
defp docs do
[
main: "Pasexto",
source_ref: "v#{@version}",
source_url: @source_url,
extras: []
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp package do
[
name: "pasexto",
build_tools: ~w(mix zig),
files: ~w(.formatter.exs CHANGELOG* LICENSE* README* build.zig lib mix.exs src zig),
licenses: ["MIT"],
links: %{"GitHub" => @source_url},
maintainers: ["Alex Kornitzer"]
]
end
end