Packages

Elixir SDK for the SW4RM multi-agent coordination protocol

Current section

Files

Jump to
sw4rm_sdk mix.exs
Raw

mix.exs

defmodule Sw4rm.MixProject do
use Mix.Project
@version "0.6.0"
def project do
[
app: :sw4rm_sdk,
version: @version,
elixir: "~> 1.16",
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
name: "SW4RM SDK",
description: "Elixir SDK for the SW4RM multi-agent coordination protocol",
source_url: "https://github.com/sw4rm/sw4rm-sdk-elixir",
package: package(),
docs: [main: "Sw4rm", extras: ["README.md"]]
]
end
def application do
[
extra_applications: [:logger, :crypto],
mod: {Sw4rm.Application, []}
]
end
defp deps do
[
{:grpc, "~> 0.11"},
{:protobuf, "~> 0.14"},
{:jason, "~> 1.4"},
{:ex_doc, "~> 0.31", only: :dev, runtime: false}
]
end
defp aliases do
[
"proto.gen": &proto_gen/1
]
end
defp package do
[
licenses: ["Apache-2.0"],
links: %{
"GitHub" => "https://github.com/rahulrajaram/sw4rm",
"Protocol Docs" => "https://github.com/rahulrajaram/sw4rm/tree/master/documentation"
}
]
end
defp proto_gen(_args) do
protos_dir = Path.join([__DIR__, "..", "rust_sdk", "protos"])
out_dir = Path.join([__DIR__, "lib", "sw4rm", "proto"])
proto_files =
Path.wildcard(Path.join(protos_dir, "*.proto"))
|> Enum.join(" ")
Mix.shell().cmd(
"protoc --elixir_out=plugins=grpc:#{out_dir} " <>
"-I #{protos_dir} " <>
"-I /usr/local/include " <>
proto_files
)
end
end