Packages
finitomata
0.18.2
0.41.0
0.40.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.30.3
0.30.2
0.30.1
0.30.0
0.29.10
0.29.9
0.29.8
0.29.7
0.29.6
0.29.5
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.1
0.28.0
0.27.1
0.27.0
0.26.4
0.26.3
0.26.2
0.26.1
0.26.0
0.25.0
0.24.4
0.24.3
0.24.2
0.24.1
0.24.0
0.23.7
0.23.6
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.1
0.1.0
The FSM implementation generated from PlantUML textual representation.
Current section
Files
Jump to
Current section
Files
finitomata
mix.exs
mix.exs
defmodule Finitomata.MixProject do
use Mix.Project
@app :finitomata
@version "0.18.2"
def project do
[
app: @app,
name: "Finitomata",
version: @version,
elixir: "~> 1.15",
compilers: compilers(Mix.env()),
elixirc_paths: elixirc_paths(Mix.env()),
prune_code_paths: Mix.env() == :prod,
preferred_cli_env: [{:"enfiladex.suite", :test}],
consolidate_protocols: Mix.env() not in [:dev, :test],
description: description(),
package: package(),
deps: deps(),
aliases: aliases(),
xref: [exclude: []],
docs: docs(),
# elixirc_options: [debug_info: Mix.env() in [:dev, :test, :ci]],
releases: [],
dialyzer: [
plt_file: {:no_warn, ".dialyzer/dialyzer.plt"},
plt_add_deps: :app_tree,
plt_add_apps: [:mix],
list_unused_filters: true,
ignore_warnings: ".dialyzer/ignore.exs"
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp deps do
[
{:nimble_parsec, "~> 1.0"},
{:nimble_options, "~> 0.3 or ~> 1.0"},
{:gen_stage, "~> 1.0"},
{:estructura, "~> 0.5 or ~> 1.0"},
# dev / test
{:enfiladex, "~> 0.1", only: [:dev, :test]},
{:mox, "~> 1.0", only: [:dev, :test, :ci]},
{:stream_data, "~> 0.5"},
{:observer_cli, "~> 1.5", only: [:dev]},
{:credo, "~> 1.0", only: [:dev, :ci]},
{:dialyxir, "~> 1.0", only: [:dev, :ci], runtime: false},
{:ex_doc, "~> 0.11", only: [:dev]}
]
end
defp aliases do
[
test: ["test --exclude distributed", "test --exclude test include distributed"],
quality: ["format", "credo --strict", "dialyzer --unmatched_returns"],
"quality.ci": [
"format --check-formatted",
"credo --strict",
"dialyzer"
]
]
end
defp description do
"""
The FSM implementation generated from PlantUML textual representation.
"""
end
defp package do
[
name: @app,
files: ~w|stuff lib mix.exs README.md LICENSE|,
maintainers: ["Aleksei Matiushkin"],
licenses: ["Kantox LTD"],
links: %{
"GitHub" => "https://github.com/am-kantox/#{@app}",
"Docs" => "https://hexdocs.pm/#{@app}"
}
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
canonical: "http://hexdocs.pm/#{@app}",
logo: "stuff/#{@app}-48x48.png",
source_url: "https://github.com/am-kantox/#{@app}",
assets: "stuff/images",
extras: ~w[README.md stuff/fsm.md stuff/compiler.md],
groups_for_modules: [
FSM: [Finitomata, Infinitomata, Finitomata.Throttler, Finitomata.Pool, Finitomata.ExUnit],
Internals: [
Finitomata.Listener,
Finitomata.ClusterInfo,
Finitomata.Parser,
Finitomata.Pool.Actor,
Finitomata.State,
Finitomata.Transition,
Finitomata.Transition.Path
],
Persistence: [
Finitomata.Persistency,
Finitomata.Persistency.Persistable,
Finitomata.Persistency.Protocol
]
],
before_closing_body_tag: &before_closing_body_tag/1
]
end
defp compilers(_), do: Mix.compilers()
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(:ci), do: ["lib"]
defp elixirc_paths(:dev), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp before_closing_body_tag(:html) do
"""
<script src="https://cdn.jsdelivr.net/npm/mermaid@8.13.3/dist/mermaid.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
mermaid.initialize({ startOnLoad: false });
let id = 0;
for (const codeEl of document.querySelectorAll("pre code.mermaid")) {
const preEl = codeEl.parentElement;
const graphDefinition = codeEl.textContent;
const graphEl = document.createElement("div");
const graphId = "mermaid-graph-" + id++;
mermaid.render(graphId, graphDefinition, function (svgSource, bindListeners) {
graphEl.innerHTML = svgSource;
bindListeners && bindListeners(graphEl);
preEl.insertAdjacentElement("afterend", graphEl);
preEl.remove();
});
}
});
</script>
"""
end
defp before_closing_body_tag(_), do: ""
end