bonfire-app/mix.exs

306 lines
9.7 KiB
Elixir
Raw Normal View History

Code.eval_file("lib/mix/mess.exs")
Code.eval_file("lib/mix/mixer.ex")
2022-09-12 04:34:14 +00:00
defmodule Bonfire.Umbrella.MixProject do
2020-08-05 07:39:59 +00:00
use Mix.Project
2022-10-14 05:11:56 +00:00
alias Bonfire.Mixer
# we only behave as an umbrella im dev/test env
@umbrella_path if Mix.env() != :prod, do: Mixer.forks_path(), else: nil
@mess_opts [umbrella_root?: true, umbrella_path: @umbrella_path]
2022-10-14 05:11:56 +00:00
@extra_deps [
## password hashing - builtin vs nif
{:pbkdf2_elixir, "~> 2.0", only: [:dev, :test]},
{:argon2_elixir, "~> 3.0", only: [:prod]},
## dev conveniences
#
2022-10-14 05:11:56 +00:00
# {:exsync, git: "https://github.com/falood/exsync", only: :dev},
# {:mix_unused, "~> 0.4", only: :dev},
{:ex_doc, "~> 0.28.3", only: [:dev, :test], runtime: false},
{:ecto_erd, "~> 0.4", only: :dev},
# {:ecto_dev_logger, "~> 0.4", only: :dev},
# flame graphs in live_dashboard
# {:flame_on, "~> 0.5", only: :dev},
{:pseudo_gettext, git: "https://github.com/tmbb/pseudo_gettext", only: :dev},
{:periscope, "~> 0.4", only: :dev},
# {:changelog, "~> 0.1", only: [:dev, :test], runtime: false}, # retrieve changelogs of latest dependency versions
# changelog generation
{:versioce, "~> 1.1.2", only: :dev},
# needed for changelog generation
{:git_cli, "~> 0.3.0", only: :dev},
# {:archeometer, git: "https://gitlab.com/mayel/archeometer", only: [:dev, :test]}, # "~> 0.1.0" # disabled because exqlite not working in CI
{:recode, "~> 0.4", only: :dev},
# API client needed for changelog generation
{:neuron, "~> 5.0", only: :dev, override: true},
# note: cannot use only: dev
# {:phoenix_profiler, "~> 0.2.0"},
# tests
{:floki, ">= 0.0.0", only: [:dev, :test]},
{:mock, "~> 0.3", only: :test},
# {:mox, "~> 1.0", only: :test},
2022-10-14 05:11:56 +00:00
{:zest, "~> 0.1.0"},
{:grumble, "~> 0.1.3", only: [:test], override: true},
{:mix_test_watch, "~> 1.1", only: :test, runtime: false, override: true},
{:mix_test_interactive, "~> 1.2", only: :test, runtime: false},
{:ex_unit_notifier, "~> 1.0", only: :test},
{:wallaby, "~> 0.30", runtime: false, only: :test},
# {:bypass, "~> 2.1", only: :test}, # used in furlex
# Benchmarking utilities
{:benchee, "~> 1.1", only: :dev},
{:benchee_html, "~> 1.0", only: :dev},
# list dependencies & licenses
{
:licensir,
only: :dev,
runtime: false,
git: "https://github.com/bonfire-networks/licensir",
branch: "main"
# path: "./forks/licensir"
},
# security auditing
# {:mix_audit, "~> 0.1", only: [:dev], runtime: false}
{:sobelow, "~> 0.8", only: :dev}
]
2020-08-05 07:39:59 +00:00
2022-09-12 04:34:14 +00:00
# TODO: put these in ENV or an external writeable config file similar to deps.*
2022-10-14 05:11:56 +00:00
@default_flavour "classic"
2022-09-12 04:34:14 +00:00
@config [
# note that the flavour will automatically be added where the dash appears
2022-11-19 05:03:36 +00:00
version: "0.3.6-beta.7",
2022-09-12 04:34:14 +00:00
elixir: "~> 1.13",
2022-10-14 05:11:56 +00:00
default_flavour: @default_flavour,
2022-09-12 04:34:14 +00:00
logo: "assets/static/images/bonfire-icon.png",
2022-10-14 05:11:56 +00:00
guides: [
2022-09-12 04:34:14 +00:00
"README.md",
"docs/HACKING.md",
"docs/DEPLOY.md",
"docs/ARCHITECTURE.md",
"docs/BONFIRE-FLAVOURED-ELIXIR.md",
"docs/DATABASE.md",
"docs/BOUNDARIES.md",
"docs/GRAPHQL.md",
"docs/MRF.md",
"docs/CHANGELOG.md",
"docs/CHANGELOG-autogenerated.md"
],
deps_prefixes: [
2021-12-16 22:56:46 +00:00
docs: [
2022-09-12 04:34:14 +00:00
"bonfire",
"pointers",
"paginator",
"ecto_shorts",
"ecto_sparkles",
"absinthe_client",
"activity_pub",
"arrows",
"ecto_materialized_path",
"flexto",
"grumble",
"linkify",
"verbs",
"voodoo",
"waffle",
"zest"
2021-12-16 22:56:46 +00:00
],
2022-09-12 04:34:14 +00:00
test: [
"bonfire",
"pointers",
"paginator",
"ecto_shorts",
"ecto_sparkles",
"activity_pub",
2022-09-12 05:12:35 +00:00
"arrows",
2022-09-12 04:34:14 +00:00
"linkify",
"fetch_favicon"
],
data: [
"bonfire_data_",
"bonfire_data_edges",
"pointers",
"bonfire_boundaries",
"bonfire_tag",
"bonfire_classify",
"bonfire_geolocate",
"bonfire_quantify",
"bonfire_valueflows"
],
api: [
"bonfire_me",
"bonfire_social",
"bonfire_tag",
"bonfire_classify",
"bonfire_geolocate",
"bonfire_valueflows"
],
required: [
"bonfire_boundaries",
"bonfire_social",
"bonfire_me",
"bonfire_ecto",
"bonfire_epics",
2022-11-09 20:07:56 +00:00
"bonfire_common",
"bonfire_fail"
],
2022-09-12 04:34:14 +00:00
localise: ["bonfire"],
localise_self: []
2022-10-14 05:11:56 +00:00
],
deps: Mess.deps(Mixer.mess_sources(@default_flavour), @extra_deps, @mess_opts)
2022-09-12 04:34:14 +00:00
]
2021-05-16 08:34:50 +00:00
2022-10-14 05:11:56 +00:00
def config, do: @config
def deps, do: config()[:deps]
2020-08-05 07:39:59 +00:00
def project do
[
app: :bonfire_umbrella,
apps_path: @umbrella_path,
2022-10-14 05:11:56 +00:00
version: Mixer.version(config()),
elixir: config()[:elixir],
2022-04-07 05:23:18 +00:00
elixirc_options: [debug_info: true, docs: true],
2022-10-14 05:11:56 +00:00
elixirc_paths: Mixer.elixirc_paths(config(), Mix.env()),
test_paths: Mixer.test_paths(config()),
test_deps: Mixer.deps(config(), :test),
required_deps: config()[:deps_prefixes][:required],
compilers: Mixer.compilers(Mix.env()),
2020-08-05 07:39:59 +00:00
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps(),
2022-10-14 05:11:56 +00:00
multirepo_deps: Mixer.deps(config(), :bonfire),
in_multirepo_fn: &Mixer.in_multirepo?/1,
multirepo_recompile_fn: &Mixer.deps_recompile/0,
config_path: Mixer.config_path(config(), "config.exs"),
releases: [
2022-04-07 06:20:32 +00:00
bonfire: [
2022-10-14 05:11:56 +00:00
runtime_config_path: Mixer.config_path(config(), "runtime.exs"),
2022-09-12 04:34:14 +00:00
# to enable debugging
strip_beams: false
]
2021-11-19 00:48:15 +00:00
],
2022-10-14 05:11:56 +00:00
sources_url: "https://github.com/bonfire-networks",
2022-03-06 00:32:13 +00:00
source_url: "https://github.com/bonfire-networks/bonfire-app",
homepage_url: "https://bonfirenetworks.org",
2021-11-19 00:48:15 +00:00
docs: [
# The first page to display from the docs
2022-11-29 06:48:46 +00:00
name: "Bonfire",
2021-11-19 00:48:15 +00:00
main: "readme",
2022-10-14 05:11:56 +00:00
logo: config()[:logo],
2021-11-19 00:48:15 +00:00
output: "docs/exdoc",
2022-10-14 05:11:56 +00:00
source_url_pattern: &Mixer.source_url_pattern/2,
2021-12-16 22:56:46 +00:00
# extra pages to include
2022-10-14 05:11:56 +00:00
extras: Mixer.readme_paths(config()),
2022-03-06 00:32:13 +00:00
# extra apps to include in module docs
2022-11-29 06:48:46 +00:00
source_beam: Mixer.docs_beam_paths(config()),
# deps: Mixer.doc_dep_urls(config()),
2022-09-12 04:34:14 +00:00
# Note: first match wins
groups_for_extras: [
Guides: Path.wildcard("docs/*"),
2022-03-06 00:32:13 +00:00
"Flavours of Bonfire": Path.wildcard("flavours/*/*"),
2022-11-29 06:48:46 +00:00
"Data schemas": Path.wildcard("{extensions,deps,forks}/bonfire_data_*/*"),
"UI extensions": Path.wildcard("{extensions,deps,forks}/bonfire_ui_*/*"),
2022-09-12 04:34:14 +00:00
"Bonfire utilities":
[
"bonfire_api_graphql",
"bonfire_boundaries",
"bonfire_common",
"bonfire_ecto",
"bonfire_epics",
"bonfire_fail",
"bonfire_files",
"bonfire_mailer"
]
2022-11-29 06:48:46 +00:00
|> Enum.flat_map(&Path.wildcard("{extensions,deps,forks}/#{&1}/*")),
"Feature extensions": Path.wildcard("{extensions,deps,forks}/bonfire_*/*"),
"Other utilities": Path.wildcard("{extensions,deps,forks}/*/*"),
2022-09-12 04:34:14 +00:00
Dependencies: Path.wildcard("docs/DEPENDENCIES/*")
2022-03-06 00:32:13 +00:00
],
groups_for_modules: [
"Data schemas": ~r/^Bonfire.Data.?/,
"UI extensions": ~r/^Bonfire.UI.?/,
2022-09-12 04:34:14 +00:00
"Bonfire utilities": [
~r/^Bonfire.API?/,
~r/^Bonfire.GraphQL?/,
~r/^Bonfire.Web?/,
~r/^Bonfire.Boundaries?/,
~r/^Bonfire.Common?/,
~r/^Bonfire.Ecto?/,
~r/^Bonfire.Epics?/,
~r/^Bonfire.Fail?/,
~r/^Bonfire.Files?/,
2022-11-29 06:48:46 +00:00
~r/^Bonfire.Mailer?/,
~r/^Pointers?/
2022-09-12 04:34:14 +00:00
],
2022-03-06 00:32:13 +00:00
"Feature extensions": [~r/^Bonfire.?/, ~r/^ValueFlows.?/],
2022-11-29 06:48:46 +00:00
Federation: [
~r/^ActivityPub.?/,
~r/^ActivityPub.?/,
~r/^Nodeinfo.?/,
~r/^NodeinfoWeb.?/
],
Icons: ~r/^Iconify.?/,
2022-09-12 04:34:14 +00:00
Utilities: ~r/.?/
2022-03-06 00:32:13 +00:00
],
2022-03-06 01:55:05 +00:00
nest_modules_by_prefix: [
Bonfire.Data,
# Bonfire.UI,
Bonfire,
2022-11-29 06:48:46 +00:00
ActivityPub,
ActivityPubWeb,
# ValueFlows,
Iconify
2022-03-06 01:55:05 +00:00
]
2022-09-12 04:34:14 +00:00
]
2020-08-05 07:39:59 +00:00
]
end
2021-05-16 08:34:50 +00:00
defp aliases do
[
"hex.setup": ["local.hex --force"],
"rebar.setup": ["local.rebar --force"],
2022-04-07 06:38:25 +00:00
"assets.build": [
2022-09-12 04:34:14 +00:00
"cmd cd ./assets && yarn build"
2021-05-16 08:34:50 +00:00
],
2021-10-10 01:02:52 +00:00
"bonfire.seeds": [
# "phil_columns.seed",
],
2022-11-09 20:07:56 +00:00
# FIXME: this does not update transitive deps
2022-10-14 05:11:56 +00:00
"bonfire.deps.update": ["deps.update " <> Mixer.deps_to_update(config())],
2022-09-12 04:34:14 +00:00
"bonfire.deps.clean": [
2022-10-14 05:11:56 +00:00
"deps.clean " <> Mixer.deps_to_clean(config(), :localise) <> " --build"
2022-09-12 04:34:14 +00:00
],
"bonfire.deps.clean.data": [
2022-10-14 05:11:56 +00:00
"deps.clean " <> Mixer.deps_to_clean(config(), :data) <> " --build"
2022-09-12 04:34:14 +00:00
],
"bonfire.deps.clean.api": [
2022-10-14 05:11:56 +00:00
"deps.clean " <> Mixer.deps_to_clean(config(), :api) <> " --build"
2022-09-12 04:34:14 +00:00
],
"bonfire.deps.recompile": [
2022-10-14 05:11:56 +00:00
"deps.compile " <> Mixer.deps_to_update(config()) <> " --force"
2022-09-12 04:34:14 +00:00
],
2022-03-06 00:32:13 +00:00
"ecto.seeds": [
2022-10-14 05:11:56 +00:00
"run #{Mixer.flavour_path(config())}/repo/seeds.exs"
2022-09-12 04:34:14 +00:00
],
2022-03-06 00:32:13 +00:00
"js.deps.get": ["cmd make js.deps.get"],
"js.deps.update": ["cmd cd assets && yarn update"],
2022-09-12 04:34:14 +00:00
setup: [
"hex.setup",
"rebar.setup",
"deps.get",
"bonfire.deps.clean.data",
"ecto.setup"
],
2022-11-04 10:18:59 +00:00
updates: ["deps.get", "bonfire.deps.update"],
2021-05-16 08:34:50 +00:00
upgrade: ["updates", "ecto.migrate"],
2021-11-25 02:21:03 +00:00
"ecto.setup": ["ecto.create", "ecto.migrate"],
"ecto.migrate": ["ecto.migrate", "bonfire.seeds"],
2022-01-09 10:19:16 +00:00
"ecto.reset": ["ecto.drop --force", "ecto.setup"],
2022-09-12 04:34:14 +00:00
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"]
2021-05-16 08:34:50 +00:00
]
end
2020-08-05 07:39:59 +00:00
end