Current section
Files
Jump to
Current section
Files
mix.exs
# credo:disable-for-this-file Credo.Check.Refactor.ModuleDependencies
defmodule DevJoy.MixProject do
use Mix.Project
alias DevJoy.API
alias DevJoy.Scene.Asset
alias DevJoy.Scene.Challenge
alias DevJoy.Scene.Choice
alias DevJoy.Scene.Condition
alias DevJoy.Scene.Dialog
alias DevJoy.Scene.Menu
alias DevJoy.Scene.Note
alias DevJoy.Scene.Part
alias DevJoy.Session
@deps [
# Code checking
{:credo, "~> 1.7", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: :test, runtime: false},
# Documentation
{:ex_doc, "~> 0.37", only: :dev, runtime: false},
# Tests
{:excoveralls, "~> 0.18", only: :test},
{:esbuild, "~> 0.9", only: :dev},
{:floki, "~> 0.37", only: :test},
expo: "~> 1.1",
phoenix_live_view: "~> 1.0"
]
@groups_for_modules [
"API & DSL": [DevJoy.Scene, API.Item, API.Notifier, API.Storage],
Session: [Session, Session.History, Session.LiveView, Session.Notifier, Session.Storage],
Structs: [DevJoy.Character, Asset, Challenge, Choice, Condition, Dialog, Menu, Note, Part]
]
@name :dev_joy
@source_url "https://gitlab.com/ramurix-software/dev-joy"
@version "2.0.0"
@spec cli :: Keyword.t()
def cli, do: [preferred_envs: [coveralls: :test, "coveralls.html": :test, dialyzer: :test]]
@spec project :: Keyword.t()
def project do
[
aliases: [
"assets.build": ["esbuild module", "esbuild cdn", "esbuild cdn_min", "esbuild main"],
"assets.setup": ["esbuild.install --if-missing"],
docs: ["docs", &generate_js_docs/1],
setup: ["deps.get", "assets.setup", "assets.build"]
],
app: @name,
deps: @deps,
description: "Easier creation of the Visual Novel-like games or presentations.",
dialyzer: [plt_add_apps: [:mix]],
docs: [
api_reference: false,
authors: ["Tomasz Marek Sulima"],
extra_section: "Guides",
extras: ["README.md": [filename: "introduction", title: "Introduction"]],
favicon: "priv/logo.svg",
groups_for_docs: [
Delayed: &(&1[:section] == :delayed),
"Field types": &(&1[:section] == :field),
"Generated using DSL": &(&1[:section] == :generated),
Immediate: &(&1[:section] == :immediate),
Main: &(&1[:section] == :main),
"Session DSL": &(&1[:section] == :session_dsl),
"Struct DSL": &(&1[:section] == :struct_dsl)
],
groups_for_modules: @groups_for_modules,
logo: "priv/logo.svg",
main: "introduction",
source_ref: "v#{@version}",
source_url: @source_url
],
elixir: "~> 1.16",
elixirc_paths: ["lib"],
name: "DevJoy",
package: [
exclude_patterns: [~r[.*_test.exs], ~r[lib/test_helper.exs]],
files: ~w(.formatter.exs lib LICENSE mix.exs package.json priv README.md),
licenses: ["Apache-2.0"],
links: %{"GitLab" => @source_url},
maintainers: ["Tomasz Sulima"]
],
start_permanent: Mix.env() == :prod,
test_coverage: [tool: ExCoveralls],
test_paths: ["lib"],
version: @version
]
end
defp generate_js_docs(_args) do
Mix.Task.run("app.start")
System.cmd("npm", ["run", "docs"], cd: "assets", env: [])
end
end