perf: "mixify" project to improve release speed

Fixes https://emqx.atlassian.net/browse/EMQX-12527
This commit is contained in:
Thales Macedo Garitezi 2024-06-13 15:36:58 -03:00
parent 77ef648573
commit b74828d7ea
98 changed files with 2897 additions and 164 deletions

44
apps/emqx/mix.exs Normal file
View File

@ -0,0 +1,44 @@
defmodule EMQX.MixProject do
use Mix.Project
def project do
[
app: :emqx,
version: "0.1.0",
build_path: "../../_build",
erlc_options: [
{:i, "src"}
| EMQXUmbrella.MixProject.erlc_options()
],
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [:public_key, :ssl],
mod: {:emqx_app, []}
]
end
def deps() do
[
{:emqx_utils, in_umbrella: true},
{:ekka, github: "emqx/ekka", tag: "0.19.3", override: true},
{:esockd, github: "emqx/esockd", tag: "5.11.2"},
{:gproc, github: "emqx/gproc", tag: "0.9.0.1", override: true},
{:hocon, github: "emqx/hocon", tag: "0.42.2", override: true},
{:lc, github: "emqx/lc", tag: "0.3.2", override: true},
{:ranch, github: "emqx/ranch", tag: "1.8.1-emqx", override: true},
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10", override: true},
] ++ quicer_dep()
end
defp quicer_dep(), do: EMQXUmbrella.MixProject.quicer_dep()
end

25
apps/emqx_audit/mix.exs Normal file
View File

@ -0,0 +1,25 @@
defmodule EMQXAudit.MixProject do
use Mix.Project
def project do
[
app: :emqx_audit,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_audit_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_utils, in_umbrella: true}]
end
end

32
apps/emqx_auth/mix.exs Normal file
View File

@ -0,0 +1,32 @@
defmodule EMQXAuth.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
]
end
end

View File

@ -19,6 +19,8 @@
%% @end
%%%-------------------------------------------------------------------
%% TODO: delete this module
-module(emqx_authz_app).
-behaviour(application).

View File

@ -0,0 +1,25 @@
defmodule EMQXAuthExt.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_ext,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

View File

@ -0,0 +1,35 @@
defmodule EMQXAuthHTTP.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_http,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_http_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
{:hocon, github: "emqx/hocon", tag: "0.42.2", override: true},
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10", override: true},
]
end
end

View File

@ -0,0 +1,35 @@
defmodule EMQXAuthJWT.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_jwt,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_jwt_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"},
]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXAuthLDAP.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_ldap,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [:eldap],
mod: {:emqx_auth_ldap_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXAuthMnesia.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_mnesia,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_mnesia_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXAuthMongoDB.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_mongodb,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_mongodb_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXAuthMySQL.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_mysql,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_mysql_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,34 @@
defmodule EMQXAuthPostgreSQL.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_postgresql,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_postgresql_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
{:epgsql, github: "emqx/epgsql", tag: "4.7.1.2", override: true},
]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXAuthRedis.MixProject do
use Mix.Project
def project do
[
app: :emqx_auth_redis,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_auth_redis_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXAutoSubscribe.MixProject do
use Mix.Project
def project do
[
app: :emqx_auto_subscribe,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_auto_subscribe_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_utils, in_umbrella: true}]
end
end

33
apps/emqx_bridge/mix.exs Normal file
View File

@ -0,0 +1,33 @@
defmodule EMQXBridge.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_bridge_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeAzureBlobStorage.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_azure_blob_storage,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_bridge_azure_blob_storage_app, []}]
end
def deps() do
[
{:emqx_resource, in_umbrella: true},
{:emqx_connector_aggregator, in_umbrella: true},
{:erlazure, github: "emqx/erlazure", tag: "0.4.0.0"}
]
end
end

View File

@ -0,0 +1,36 @@
defmodule EMQXBridgeAzureEventHub.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_azure_event_hub,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:wolff, github: "kafka4beam/wolff", tag: "1.10.4"},
## TODO: remove `mix.exs` from `wolff` and remove this override
{:kafka_protocol, github: "kafka4beam/kafka_protocol", tag: "4.1.5", override: true},
{:brod_gssapi, github: "kafka4beam/brod_gssapi", tag: "v0.1.1"},
{:brod, github: "kafka4beam/brod", tag: "3.18.0"},
## TODO: remove `mix.exs` from `pulsar` and remove this override
{:snappyer, "1.2.9", override: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeCassandra.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_cassandra,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:ecql, github: "emqx/ecql", tag: "v0.7.0"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeClickhouse.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_clickhouse,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:clickhouse, github: "emqx/clickhouse-client-erl", tag: "0.3.1"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,36 @@
defmodule EMQXBridgeConfluent.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_confluent,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:wolff, github: "kafka4beam/wolff", tag: "1.10.4"},
## TODO: remove `mix.exs` from `wolff` and remove this override
{:kafka_protocol, github: "kafka4beam/kafka_protocol", tag: "4.1.5", override: true},
{:brod_gssapi, github: "kafka4beam/brod_gssapi", tag: "v0.1.1"},
{:brod, github: "kafka4beam/brod", tag: "3.18.0"},
## TODO: remove `mix.exs` from `pulsar` and remove this override
{:snappyer, "1.2.9", override: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeDynamo.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_dynamo,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:erlcloud, github: "emqx/erlcloud", tag: "3.7.0.3"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,31 @@
defmodule EMQXBridgeEs.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_es,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_bridge_http, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeGcpPubsub.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_gcp_pubsub,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_bridge_http, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeGreptimedb.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_greptimedb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:greptimedb, github: "GreptimeTeam/greptimedb-ingester-erl", tag: "v0.1.8"}
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXBridgeHstreamdb.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_hstreamdb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:hstreamdb_erl,
github: "hstreamdb/hstreamdb_erl", tag: "0.5.18+v0.18.1+ezstd-v1.0.5-emqx1"},
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXBridgeHTTP.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_http,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: []
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeInfluxdb.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_influxdb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:influxdb, github: "emqx/influxdb-client-erl", tag: "1.1.13"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,31 @@
defmodule EMQXBridgeIotdb.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_iotdb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_bridge_http, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,36 @@
defmodule EMQXBridgeKafka.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_kafka,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:wolff, github: "kafka4beam/wolff", tag: "1.10.4"},
## TODO: remove `mix.exs` from `wolff` and remove this override
{:kafka_protocol, github: "kafka4beam/kafka_protocol", tag: "4.1.5", override: true},
{:brod_gssapi, github: "kafka4beam/brod_gssapi", tag: "v0.1.1"},
{:brod, github: "kafka4beam/brod", tag: "3.18.0"},
## TODO: remove `mix.exs` from `pulsar` and remove this override
{:snappyer, "1.2.9", override: true},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeKinesis.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_kinesis,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:erlcloud, github: "emqx/erlcloud", tag: "3.7.0.3"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeMatrix.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_matrix,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeMongodb.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_mongodb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_mongodb, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXBridgeMQTT.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_mqtt,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: []
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeMysql.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_mysql,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_mysql, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeOpents.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_opents,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:opentsdb, github: "emqx/opentsdb-client-erl", tag: "v0.5.1"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeOracle.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_oracle,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_oracle, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgePgsql.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_pgsql,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_postgresql, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,34 @@
defmodule EMQXBridgePulsar.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_pulsar,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
## TODO: remove `mix.exs` from `pulsar` and remove this override
{:crc32cer, git: "https://github.com/zmstone/crc32cer", tag: "0.1.8", override: true},
## TODO: remove `mix.exs` from `pulsar` and remove this override
{:snappyer, "1.2.9", override: true},
{:pulsar, github: "emqx/pulsar-client-erl", tag: "0.8.3"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,38 @@
defmodule EMQXBridgeRabbitmq.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_rabbitmq,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_bridge_rabbitmq_app, []}]
end
def deps() do
[
{:thoas, github: "emqx/thoas", tag: "v1.0.0", override: true},
{:credentials_obfuscation, github: "emqx/credentials-obfuscation", tag: "v3.2.0", override: true},
{:rabbit_common,
github: "emqx/rabbitmq-server", tag: "v3.11.13.2",
sparse: "deps/rabbit_common",
override: true
},
{:amqp_client,
github: "emqx/rabbitmq-server", tag: "v3.11.13.2", sparse: "deps/amqp_client"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeRedis.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_redis,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_redis, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeRocketmq.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_rocketmq,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:rocketmq, github: "emqx/rocketmq-client-erl", tag: "v0.6.1"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeS3.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_s3,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_bridge_s3_app, []}]
end
def deps() do
[
{:emqx_resource, in_umbrella: true},
{:emqx_connector_aggregator, in_umbrella: true},
{:emqx_s3, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeSqlserver.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_sqlserver,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeSyskeeper.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_syskeeper,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXBridgeTdengine.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_tdengine,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:tdengine, github: "emqx/tdengine-client-erl", tag: "0.1.7"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXBridgeTimescale.MixProject do
use Mix.Project
def project do
[
app: :emqx_bridge_timescale,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false}
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXClusterLink.MixProject do
use Mix.Project
def project do
[
app: :emqx_cluster_link,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_cluster_link_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_resource, in_umbrella: true}]
end
end

33
apps/emqx_conf/mix.exs Normal file
View File

@ -0,0 +1,33 @@
defmodule EMQXConf.MixProject do
use Mix.Project
def project do
[
app: :emqx_conf,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_conf_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true, runtime: false},
{:emqx_auth, in_umbrella: true, runtime: false},
]
end
end

View File

@ -1428,6 +1428,8 @@ to_atom(Bin) when is_binary(Bin) ->
binary_to_atom(Bin, utf8).
roots(Module) ->
%% io:format(user, "\n\n>>>>>>>>>>>>>>>\n ~p\n\n", [#{e => emqx_release:edition(), m => Module}]),
%% error({Module, emqx_release:edition()}),
lists:map(fun({_BinName, Root}) -> Root end, hocon_schema:roots(Module)).
%% Like authentication schema, authorization schema is incomplete in emqx_schema

View File

@ -0,0 +1,35 @@
defmodule EMQXConnector.MixProject do
use Mix.Project
def project do
[
app: :emqx_connector,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_connector_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_bridge, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"},
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXConnectorAggregator.MixProject do
use Mix.Project
def project do
[
app: :emqx_connector_aggregator,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

25
apps/emqx_ctl/mix.exs Normal file
View File

@ -0,0 +1,25 @@
defmodule EMQXCtl.MixProject do
use Mix.Project
def project do
[
app: :emqx_ctl,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_ctl_app, []}]
end
def deps() do
[]
end
end

View File

@ -0,0 +1,33 @@
defmodule EMQXDashboard.MixProject do
use Mix.Project
def project do
[
app: :emqx_dashboard,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_dashboard_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:minirest, github: "emqx/minirest", tag: "1.4.1"},
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXDashboardRbac.MixProject do
use Mix.Project
def project do
[
app: :emqx_dashboard_rbac,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[{:emqx_dashboard, in_umbrella: true}]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXDashboardSso.MixProject do
use Mix.Project
def project do
[
app: :emqx_dashboard_sso,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_dashboard_sso_app, []}]
end
def deps() do
[
{:emqx_ldap, in_umbrella: true},
{:emqx_dashboard, in_umbrella: true},
{:esaml, github: "emqx/esaml", tag: "v1.1.3"}
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXDsSharedSub.MixProject do
use Mix.Project
def project do
[
app: :emqx_ds_shared_sub,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_ds_shared_sub_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXDurableStorage.MixProject do
use Mix.Project
def project do
[
app: :emqx_durable_storage,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_ds_app, []}
]
end
def deps() do
[
{:emqx_utils, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXEnterprise.MixProject do
use Mix.Project
def project do
[
app: :emqx_enterprise,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10"},
{:typerefl, github: "ieQu1/typerefl", tag: "0.9.1"},
{:hocon, github: "emqx/hocon", tag: "0.42.2"},
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXEvictionAgent.MixProject do
use Mix.Project
def project do
[
app: :emqx_eviction_agent,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_eviction_agent_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

29
apps/emqx_exhook/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXExhook.MixProject do
use Mix.Project
def project do
[
app: :emqx_exhook,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_exhook_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true},
]
end
end

25
apps/emqx_ft/mix.exs Normal file
View File

@ -0,0 +1,25 @@
defmodule EMQXFt.MixProject do
use Mix.Project
def project do
[
app: :emqx_ft,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_ft_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

29
apps/emqx_gateway/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXGateway.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_gateway_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_auth, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXGatewayCoap.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_coap,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXGatewayExproto.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_exproto,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true},
{:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true},
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXGatewayGbt32960.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_gbt32960,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXGatewayJt808.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_jt808,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXGatewayLwm2m.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_lwm2m,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_gateway, in_umbrella: true},
{:emqx_gateway_coap, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXGatewayMqttsn.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_mqttsn,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_gateway, in_umbrella: true}]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXGatewayOcpp.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_ocpp,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:jesse, github: "emqx/jesse", tag: "1.8.0"},
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXGatewayStomp.MixProject do
use Mix.Project
def project do
[
app: :emqx_gateway_stomp,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,34 @@
defmodule EMQXGCPDevice.MixProject do
use Mix.Project
def project do
[
app: :emqx_gcp_device,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_gcp_device_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"},
]
end
end

26
apps/emqx_ldap/mix.exs Normal file
View File

@ -0,0 +1,26 @@
defmodule EMQXLdap.MixProject do
use Mix.Project
def project do
[
app: :emqx_ldap,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [:eldap]]
end
def deps() do
[{:emqx_connector, in_umbrella: true},
{:emqx_resource, in_umbrella: true}]
end
end

25
apps/emqx_license/mix.exs Normal file
View File

@ -0,0 +1,25 @@
defmodule EMQXLicense.MixProject do
use Mix.Project
def project do
[
app: :emqx_license,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_license_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_utils, in_umbrella: true}]
end
end

36
apps/emqx_machine/mix.exs Normal file
View File

@ -0,0 +1,36 @@
defmodule EMQXMachine.MixProject do
use Mix.Project
def project do
[
app: :emqx_machine,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_machine_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true, runtime: false},
{:emqx_conf, in_umbrella: true, runtime: false},
{:emqx_dashboard, in_umbrella: true, runtime: false},
{:emqx_management, in_umbrella: true, runtime: false},
{:covertool, github: "zmstone/covertool", tag: "2.0.4.1"},
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXManagement.MixProject do
use Mix.Project
def project do
[
app: :emqx_management,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_mgmt_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_bridge_http, in_umbrella: true},
{:emqx_dashboard, in_umbrella: true},
{:emqx_plugins, in_umbrella: true},
{:emqx_ctl, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXMessageTransformation.MixProject do
use Mix.Project
def project do
[
app: :emqx_message_transformation,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_message_transformation_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_schema_registry, in_umbrella: true}
]
end
end

29
apps/emqx_modules/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXModules.MixProject do
use Mix.Project
def project do
[
app: :emqx_modules,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_modules_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_conf, in_umbrella: true}
]
end
end

29
apps/emqx_mongodb/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXMongodb.MixProject do
use Mix.Project
def project do
[
app: :emqx_mongodb,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:mongodb, github: "emqx/mongodb-erlang", tag: "v3.0.23"}
]
end
end

29
apps/emqx_mysql/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXMysql.MixProject do
use Mix.Project
def project do
[
app: :emqx_mysql,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:mysql, github: "emqx/mysql-otp", tag: "1.7.4.1"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXNodeRebalance.MixProject do
use Mix.Project
def project do
[
app: :emqx_node_rebalance,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_node_rebalance_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

View File

@ -0,0 +1,52 @@
defmodule EMQXOpentelemetry.MixProject do
use Mix.Project
def project do
[
app: :emqx_opentelemetry,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_otel_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:opentelemetry_api,
github: "emqx/opentelemetry-erlang",
tag: "v1.4.7-emqx",
sparse: "apps/opentelemetry_api",
override: true},
{:opentelemetry,
github: "emqx/opentelemetry-erlang",
tag: "v1.4.7-emqx",
sparse: "apps/opentelemetry",
override: true},
{:opentelemetry_experimental,
github: "emqx/opentelemetry-erlang",
tag: "v1.4.7-emqx",
sparse: "apps/opentelemetry_experimental",
override: true},
{:opentelemetry_api_experimental,
github: "emqx/opentelemetry-erlang",
tag: "v1.4.7-emqx",
sparse: "apps/opentelemetry_api_experimental",
override: true},
{:opentelemetry_exporter,
github: "emqx/opentelemetry-erlang",
tag: "v1.4.7-emqx",
sparse: "apps/opentelemetry_exporter",
override: true}
]
end
end

29
apps/emqx_oracle/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXOracle.MixProject do
use Mix.Project
def project do
[
app: :emqx_oracle,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:jamdb_oracle, github: "emqx/jamdb_oracle", tag: "0.4.9.5"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true}
]
end
end

28
apps/emqx_plugins/mix.exs Normal file
View File

@ -0,0 +1,28 @@
defmodule EMQXPlugins.MixProject do
use Mix.Project
def project do
[
app: :emqx_plugins,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_plugins_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:erlavro, github: "emqx/erlavro", tag: "2.10.0"}
]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXPostgresql.MixProject do
use Mix.Project
def project do
[
app: :emqx_postgresql,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:epgsql, github: "emqx/epgsql", tag: "4.7.1.2"},
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXPrometheus.MixProject do
use Mix.Project
def project do
[
app: :emqx_prometheus,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_prometheus_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
{:emqx_durable_storage, in_umbrella: true},
{:prometheus, git: "https://github.com/emqx/prometheus.erl", tag: "v4.10.0.2"}
]
end
end

25
apps/emqx_psk/mix.exs Normal file
View File

@ -0,0 +1,25 @@
defmodule EMQXPsk.MixProject do
use Mix.Project
def project do
[
app: :emqx_psk,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_psk_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}]
end
end

29
apps/emqx_redis/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXRedis.MixProject do
use Mix.Project
def project do
[
app: :emqx_redis,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true},
{:eredis_cluster, github: "emqx/eredis_cluster", tag: "0.8.4"},
]
end
end

View File

@ -3,7 +3,7 @@
{erl_opts, [debug_info]}.
{deps, [
%% NOTE: mind ecpool version when updating eredis_cluster version
{eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.8.3"}}},
{eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.8.4"}}},
{emqx_connector, {path, "../../apps/emqx_connector"}},
{emqx_resource, {path, "../../apps/emqx_resource"}}
]}.

View File

@ -0,0 +1,32 @@
defmodule EMQXResource.MixProject do
use Mix.Project
def project do
[
app: :emqx_resource,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_resource_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXRetainer.MixProject do
use Mix.Project
def project do
[
app: :emqx_retainer,
version: "0.1.0",
build_path: "../../_build",
# config_path: "../../config/config.exs",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications
def application do
[
extra_applications: [],
mod: {:emqx_retainer_app, []}
]
end
def deps() do
[
{:emqx, in_umbrella: true},
]
end
end

View File

@ -0,0 +1,35 @@
defmodule EMQXRuleEngine.MixProject do
use Mix.Project
def project do
[
app: :emqx_rule_engine,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_rule_engine_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_modules, in_umbrella: true},
{:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true},
{:emqtt,
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()},
]
end
defp maybe_no_quic_env(), do: EMQXUmbrella.MixProject.maybe_no_quic_env()
end

29
apps/emqx_s3/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXS3.MixProject do
use Mix.Project
def project do
[
app: :emqx_s3,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_s3_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:erlcloud, github: "emqx/erlcloud", tag: "3.7.0.3"},
{:emqx_bridge_http, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,32 @@
defmodule EMQXSchemaRegistry.MixProject do
use Mix.Project
def project do
[
app: :emqx_schema_registry,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_schema_registry_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_rule_engine, in_umbrella: true},
{:erlavro, github: "emqx/erlavro", tag: "2.10.0"},
{:jesse, github: "emqx/jesse", tag: "1.8.0"},
{:gpb, "4.19.9"}
]
end
end

View File

@ -0,0 +1,30 @@
defmodule EMQXSchemaValidation.MixProject do
use Mix.Project
def project do
[
app: :emqx_schema_validation,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_schema_validation_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_rule_engine, in_umbrella: true},
{:emqx_schema_registry, in_umbrella: true}
]
end
end

View File

@ -0,0 +1,25 @@
defmodule EMQXSlowSubs.MixProject do
use Mix.Project
def project do
[
app: :emqx_slow_subs,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_slow_subs_app, []}]
end
def deps() do
[{:emqx, in_umbrella: true}, {:emqx_utils, in_umbrella: true}]
end
end

View File

@ -0,0 +1,29 @@
defmodule EMQXTelemetry.MixProject do
use Mix.Project
def project do
[
app: :emqx_telemetry,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: [], mod: {:emqx_telemetry_app, []}]
end
def deps() do
[
{:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true},
{:emqx_conf, in_umbrella: true}
]
end
end

29
apps/emqx_utils/mix.exs Normal file
View File

@ -0,0 +1,29 @@
defmodule EMQXUtils.MixProject do
use Mix.Project
def project do
[
app: :emqx_utils,
version: "0.1.0",
build_path: "../../_build",
erlc_options: EMQXUmbrella.MixProject.erlc_options(),
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
def application do
[extra_applications: []]
end
def deps() do
[
{:jiffy, github: "emqx/jiffy", tag: "1.0.6"},
{:emqx_http_lib, github: "emqx/emqx_http_lib", tag: "0.5.3"},
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10", override: true},
]
end
end

196
mix.exs
View File

@ -34,14 +34,17 @@ defmodule EMQXUmbrella.MixProject do
version = pkg_vsn()
[
app: :emqx_mix,
# app: :emqx_mix,
apps_path: "apps",
apps: applications(profile_info.release_type, profile_info.edition_type) |> Keyword.keys(),
erlc_options: erlc_options(profile_info, version),
version: version,
deps: deps(profile_info, version),
releases: releases()
]
end
defp deps(profile_info, version) do
defp deps(_profile_info, _version) do
# we need several overrides here because dependencies specify
# other exact versions, and not ranges.
[
@ -103,160 +106,7 @@ defmodule EMQXUmbrella.MixProject do
{:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true},
{:ra, "2.7.3", override: true},
{:mimerl, "1.2.0", override: true}
] ++
emqx_apps(profile_info, version) ++
enterprise_deps(profile_info) ++ jq_dep() ++ quicer_dep()
end
defp emqx_apps(profile_info, version) do
apps = umbrella_apps(profile_info) ++ enterprise_apps(profile_info)
set_emqx_app_system_env(apps, profile_info, version)
end
defp umbrella_apps(profile_info = %{release_type: release_type}) do
enterprise_apps = enterprise_umbrella_apps(release_type)
excluded_apps = excluded_apps(release_type)
"apps/*"
|> Path.wildcard()
|> Enum.map(fn path ->
app =
path
|> Path.basename()
|> String.to_atom()
{app, path: path, manager: :rebar3, override: true}
end)
|> Enum.reject(fn dep_spec ->
dep_spec
|> elem(0)
|> then(&MapSet.member?(enterprise_apps, &1))
end)
|> Enum.reject(fn {app, _} ->
case profile_info do
%{edition_type: :enterprise} ->
app == :emqx_telemetry
_ ->
false
end
end)
|> Enum.reject(fn {app, _} -> app in excluded_apps end)
end
defp enterprise_apps(_profile_info = %{release_type: release_type, edition_type: :enterprise}) do
Enum.map(enterprise_umbrella_apps(release_type), fn app_name ->
path = "apps/#{app_name}"
{app_name, path: path, manager: :rebar3, override: true}
end)
end
defp enterprise_apps(_profile_info) do
[]
end
# need to remove those when listing `/apps/`...
defp enterprise_umbrella_apps(_release_type) do
MapSet.new([
:emqx_connector_aggregator,
:emqx_bridge_kafka,
:emqx_bridge_confluent,
:emqx_bridge_gcp_pubsub,
:emqx_bridge_cassandra,
:emqx_bridge_opents,
:emqx_bridge_dynamo,
:emqx_bridge_greptimedb,
:emqx_bridge_hstreamdb,
:emqx_bridge_influxdb,
:emqx_bridge_iotdb,
:emqx_bridge_es,
:emqx_bridge_matrix,
:emqx_bridge_mongodb,
:emqx_bridge_mysql,
:emqx_bridge_pgsql,
:emqx_bridge_redis,
:emqx_bridge_rocketmq,
:emqx_bridge_tdengine,
:emqx_bridge_timescale,
:emqx_bridge_sqlserver,
:emqx_bridge_pulsar,
:emqx_oracle,
:emqx_bridge_oracle,
:emqx_bridge_rabbitmq,
:emqx_bridge_clickhouse,
:emqx_ft,
:emqx_license,
:emqx_s3,
:emqx_bridge_s3,
:emqx_schema_registry,
:emqx_schema_validation,
:emqx_message_transformation,
:emqx_enterprise,
:emqx_bridge_kinesis,
:emqx_bridge_azure_event_hub,
:emqx_gcp_device,
:emqx_dashboard_rbac,
:emqx_dashboard_sso,
:emqx_audit,
:emqx_gateway_gbt32960,
:emqx_gateway_ocpp,
:emqx_gateway_jt808,
:emqx_bridge_syskeeper,
:emqx_auth_ext
])
end
defp enterprise_deps(_profile_info = %{edition_type: :enterprise}) do
[
{:hstreamdb_erl,
github: "hstreamdb/hstreamdb_erl", tag: "0.5.18+v0.18.1+ezstd-v1.0.5-emqx1"},
{:influxdb, github: "emqx/influxdb-client-erl", tag: "1.1.13", override: true},
{:wolff, github: "kafka4beam/wolff", tag: "2.0.0"},
{:kafka_protocol, github: "kafka4beam/kafka_protocol", tag: "4.1.5", override: true},
{:brod_gssapi, github: "kafka4beam/brod_gssapi", tag: "v0.1.1"},
{:brod, github: "kafka4beam/brod", tag: "3.18.0"},
{:snappyer, "1.2.9", override: true},
{:crc32cer, "0.1.8", override: true},
{:opentsdb, github: "emqx/opentsdb-client-erl", tag: "v0.5.1", override: true},
{:greptimedb,
github: "GreptimeTeam/greptimedb-ingester-erl", tag: "v0.1.8", override: true},
# The following two are dependencies of rabbit_common. They are needed here to
# make mix not complain about conflicting versions
{:thoas, github: "emqx/thoas", tag: "v1.0.0", override: true},
{:credentials_obfuscation,
github: "emqx/credentials-obfuscation", tag: "v3.2.0", override: true},
{:rabbit_common,
github: "emqx/rabbitmq-server",
tag: "v3.11.13.2",
sparse: "deps/rabbit_common",
override: true},
{:amqp_client,
github: "emqx/rabbitmq-server",
tag: "v3.11.13.2",
sparse: "deps/amqp_client",
override: true}
]
end
defp enterprise_deps(_profile_info) do
[]
end
defp set_emqx_app_system_env(apps, profile_info, version) do
system_env = emqx_app_system_env(profile_info, version) ++ maybe_no_quic_env()
Enum.map(
apps,
fn {app, opts} ->
{app,
Keyword.update(
opts,
:system_env,
system_env,
&Keyword.merge(&1, system_env)
)}
end
)
] ++ jq_dep() ++ quicer_dep()
end
def emqx_app_system_env(profile_info, version) do
@ -275,6 +125,22 @@ defmodule EMQXUmbrella.MixProject do
]
end
def erlc_options() do
k = {__MODULE__, :erlc_options}
case :persistent_term.get(k, :undefined) do
:undefined ->
profile_info = check_profile!()
version = pkg_vsn()
opts = erlc_options(profile_info, version)
:persistent_term.put(k, opts)
opts
opts ->
opts
end
end
def maybe_no_quic_env() do
if not enable_quicer?() do
[{"BUILD_WITHOUT_QUIC", "true"}]
@ -293,7 +159,7 @@ defmodule EMQXUmbrella.MixProject do
} = check_profile!()
base_steps = [
&make_docs(&1),
&make_docs/1,
:assemble,
&create_RELEASES/1,
&copy_files(&1, release_type, package_type, edition_type),
@ -312,6 +178,7 @@ defmodule EMQXUmbrella.MixProject do
applications: applications(release_type, edition_type),
skip_mode_validation_for: [
:emqx_mix,
:emqx_machine,
:emqx_gateway,
:emqx_gateway_stomp,
:emqx_gateway_mqttsn,
@ -380,9 +247,12 @@ defmodule EMQXUmbrella.MixProject do
db_apps = Enum.map(db_apps, &{&1, :load})
business_apps = Enum.map(business_apps, &{&1, :load})
[system_apps, db_apps, [emqx_machine: :permanent], business_apps]
[system_apps, db_apps, [emqx_ctl: :permanent, emqx_machine: :permanent], business_apps]
|> List.flatten()
|> Keyword.reject(fn {app, _type} -> app in excluded_apps end)
|> Keyword.reject(fn {app, _type} ->
app in excluded_apps ||
(edition_type == :enterprise && app == :emqx_telemetry)
end)
end
defp excluded_apps(_release_type) do
@ -814,7 +684,7 @@ defmodule EMQXUmbrella.MixProject do
else: []
end
defp quicer_dep() do
def quicer_dep() do
if enable_quicer?(),
# in conflict with emqx and emqtt
do: [{:quicer, github: "emqx/quic", tag: "0.0.313", override: true}],
@ -827,7 +697,7 @@ defmodule EMQXUmbrella.MixProject do
])
end
defp enable_quicer?() do
def enable_quicer?() do
"1" == System.get_env("BUILD_WITH_QUIC") or
not Enum.any?([
macos?(),
@ -854,7 +724,7 @@ defmodule EMQXUmbrella.MixProject do
String.trim(str)
end
defp macos?() do
def macos?() do
{:unix, :darwin} == :os.type()
end
@ -868,7 +738,7 @@ defmodule EMQXUmbrella.MixProject do
String.downcase(opt) != "false"
end
defp build_without_quic?() do
def build_without_quic?() do
opt = System.get_env("BUILD_WITHOUT_QUIC", "false")
String.downcase(opt) != "false"