Current section

Files

Jump to
yog_ex mix.exs
Raw

mix.exs

defmodule YogEx.MixProject do
use Mix.Project
@version "0.99.1"
@source_url "https://github.com/code-shoily/yog_ex"
def project do
[
app: :yog_ex,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
deps: deps(),
dialyzer: [plt_add_apps: [:mix], flags: [:no_opaque]],
# Hex
description: "A comprehensive pure Elixir graph algorithm library",
package: package(),
# Docs
name: "YogEx",
source_url: @source_url,
docs: docs(),
# Test Coverage
test_coverage: [tool: ExCoveralls, summary: [threshold: 85]],
# Suppress warnings for Erlang modules
elixirc_options: [
no_warn_undefined: [
# Erlang stdlib modules (xmerl)
:xmerl_scan,
:xmerl_xpath
]
]
]
end
# Specifies which paths to compile per environment.
defp elixirc_paths(:test), do: ["lib", "test/support", "test/oracle"]
defp elixirc_paths(_), do: ["lib"]
def cli do
[
preferred_envs: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test,
"coveralls.github": :test
]
]
end
def application do
[extra_applications: [:logger, :xmerl]]
end
defp deps do
[
{:saxy, "~> 1.5", optional: true},
{:jason, "~> 1.4", optional: true},
{:libgraph, "~> 0.16", optional: true},
{:ex_doc, "~> 0.40", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:stream_data, "~> 1.1", only: [:dev, :test]},
{:benchee, "~> 1.3", only: :dev},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.18", only: :test},
{:jump_credo_checks, "~> 0.4", only: [:dev], runtime: false}
]
end
defp package do
[
name: "yog_ex",
files:
~w(lib .formatter.exs mix.exs README.md ALGORITHMS.md PROPERTIES.md LICENSE CHANGELOG.md livebooks),
licenses: ["Apache-2.0"],
links: %{
"GitHub" => @source_url,
"Changelog" => @source_url <> "/blob/main/CHANGELOG.md",
"Examples" => @source_url <> "/blob/main/examples/README.md",
"Livebook Guides" => @source_url <> "/blob/main/livebooks/README.md"
}
]
end
defp docs do
[
main: "readme",
extras: [
{"README.md", [title: "Overview", filename: "readme"]},
{"lib/yog/CHEATSHEET.cheatmd", [title: "Cheat Sheet", filename: "cheat_sheet"]},
{"examples/README.md", [filename: "examples_readme", title: "Examples"]},
{"lib/yog/functional/README.md",
[filename: "functional_readme", title: "Inductive Graphs (Experimental)"]},
{"livebooks/guides/01_getting_started.livemd",
[filename: "getting_started", title: "Getting Started"]},
{"livebooks/how_to/maze_generation.livemd",
[filename: "maze_generation", title: "Maze Generation"]},
{"livebooks/guides/02_traversals_and_pathfinding.livemd",
[filename: "traversals_and_pathfinding", title: "Traversals & Pathfinding"]},
{"livebooks/guides/05_network_analysis.livemd",
[filename: "network_analysis", title: "Network Analysis"]},
{"livebooks/guides/06_network_flow.livemd",
[filename: "network_flow", title: "Network Flow"]},
{"livebooks/guides/03_graph_properties.livemd",
[filename: "graph_properties", title: "Graph Properties"]},
{"livebooks/guides/04_dag_analysis.livemd",
[filename: "dag_analysis", title: "DAG Analysis"]},
{"livebooks/gallery/graph_catalog.livemd",
[filename: "graph_catalog", title: "Graph Gallery"]},
{"livebooks/gallery/maze_gallery.livemd",
[filename: "maze_gallery", title: "Maze Gallery"]},
{"livebooks/how_to/dot_complete_guide.livemd",
[filename: "dot_complete_guide", title: "DOT Complete Guide"]},
{"livebooks/how_to/import_export.livemd",
[filename: "import_export", title: "Importing & Exporting"]},
{"livebooks/how_to/multigraphs_and_collapsing.livemd",
[filename: "multigraphs_and_collapsing", title: "Multigraphs & Collapsing"]},
{"livebooks/how_to/mermaid_complete_guide.livemd",
[filename: "mermaid_complete_guide", title: "Mermaid Complete Guide"]},
{"livebooks/how_to/layout_guide.livemd",
[filename: "layout_guide", title: "Layout Guide"]},
"ALGORITHMS.md",
"PROPERTIES.md",
{"test/oracle/README.md", [filename: "oracle_readme", title: "Oracle Tests"]},
"CHANGELOG.md"
],
source_ref: "v#{@version}",
source_url: @source_url,
mermaid: true,
before_closing_body_tag: &before_closing_body_tag/1,
groups_for_modules: [
Core: [
Yog,
Yog.Model,
Yog.Graph
],
"Transformers & Operations": [
Yog.Transform,
Yog.Operation
],
Builder: [
~r/Yog\.Builder/
],
"Pathfinding & Traversal": [
~r/Yog\.(Pathfinding|Traversal)/
],
"Network Algorithms": [
~r/Yog\.(MST|Flow|Connectivity|Matching)/
],
"Network Analysis": [
~r/Yog\.(Community|Centrality|Approximate)/,
Yog.Health
],
Multi: [
~r/Yog\.Multi/
],
Functional: [
~r/Yog\.Functional/
],
"Directed Acyclic Graphs (DAG)": [
~r/Yog\.DAG/
],
Properties: [
~r/Yog\.Property/
],
Generators: [
~r/Yog\.Generator/
],
"I/O & Rendering": [
~r/Yog\.IO/,
~r/Yog\.Render/,
~r/Yog\.Layout/
],
"Data Structures & Utils": [
~r/Yog\.(PriorityQueue|DisjointSet|PairingHeap)/,
Yog.Utils
]
],
groups_for_extras: [
"Cheat Sheets": [
"lib/yog/CHEATSHEET.cheatmd"
],
Guides: [
"README.md",
"examples/README.md",
"lib/yog/functional/README.md"
],
LIVEBOOK: [
"livebooks/guides/01_getting_started.livemd",
"livebooks/guides/02_traversals_and_pathfinding.livemd",
"livebooks/guides/03_graph_properties.livemd",
"livebooks/guides/04_dag_analysis.livemd",
"livebooks/guides/05_network_analysis.livemd",
"livebooks/guides/06_network_flow.livemd",
"livebooks/how_to/maze_generation.livemd",
"livebooks/how_to/layout_guide.livemd",
"livebooks/how_to/import_export.livemd",
"livebooks/how_to/multigraphs_and_collapsing.livemd",
"livebooks/how_to/mermaid_complete_guide.livemd",
"livebooks/gallery/graph_catalog.livemd",
"livebooks/gallery/maze_gallery.livemd"
],
Reference: [
"ALGORITHMS.md",
"PROPERTIES.md"
],
"Testing & Verification": [
"test/oracle/README.md"
],
Resources: [
"CHANGELOG.md"
]
]
]
end
defp before_closing_body_tag(:html) do
File.read!("priv/docs/graphviz.html")
end
defp before_closing_body_tag(_), do: ""
end