From b74828d7ea5a397cf4c81526e9d19fcc0ab3a3f1 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Thu, 13 Jun 2024 15:36:58 -0300 Subject: [PATCH] perf: "mixify" project to improve release speed Fixes https://emqx.atlassian.net/browse/EMQX-12527 --- apps/emqx/mix.exs | 44 ++++ apps/emqx_audit/mix.exs | 25 +++ apps/emqx_auth/mix.exs | 32 +++ .../src/emqx_authz/emqx_authz_app.erl | 2 + apps/emqx_auth_ext/mix.exs | 25 +++ apps/emqx_auth_http/mix.exs | 35 ++++ apps/emqx_auth_jwt/mix.exs | 35 ++++ apps/emqx_auth_ldap/mix.exs | 33 +++ apps/emqx_auth_mnesia/mix.exs | 33 +++ apps/emqx_auth_mongodb/mix.exs | 33 +++ apps/emqx_auth_mysql/mix.exs | 33 +++ apps/emqx_auth_postgresql/mix.exs | 34 +++ apps/emqx_auth_redis/mix.exs | 33 +++ apps/emqx_auto_subscribe/mix.exs | 25 +++ apps/emqx_bridge/mix.exs | 33 +++ apps/emqx_bridge_azure_blob_storage/mix.exs | 29 +++ apps/emqx_bridge_azure_event_hub/mix.exs | 36 ++++ apps/emqx_bridge_cassandra/mix.exs | 30 +++ apps/emqx_bridge_clickhouse/mix.exs | 30 +++ apps/emqx_bridge_confluent/mix.exs | 36 ++++ apps/emqx_bridge_dynamo/mix.exs | 30 +++ apps/emqx_bridge_es/mix.exs | 31 +++ apps/emqx_bridge_gcp_pubsub/mix.exs | 30 +++ apps/emqx_bridge_greptimedb/mix.exs | 30 +++ apps/emqx_bridge_hstreamdb/mix.exs | 32 +++ apps/emqx_bridge_http/mix.exs | 32 +++ apps/emqx_bridge_influxdb/mix.exs | 30 +++ apps/emqx_bridge_iotdb/mix.exs | 31 +++ apps/emqx_bridge_kafka/mix.exs | 36 ++++ apps/emqx_bridge_kinesis/mix.exs | 30 +++ apps/emqx_bridge_matrix/mix.exs | 29 +++ apps/emqx_bridge_mongodb/mix.exs | 30 +++ apps/emqx_bridge_mqtt/mix.exs | 32 +++ apps/emqx_bridge_mysql/mix.exs | 30 +++ apps/emqx_bridge_opents/mix.exs | 30 +++ apps/emqx_bridge_oracle/mix.exs | 29 +++ apps/emqx_bridge_pgsql/mix.exs | 30 +++ apps/emqx_bridge_pulsar/mix.exs | 34 +++ apps/emqx_bridge_rabbitmq/mix.exs | 38 ++++ apps/emqx_bridge_redis/mix.exs | 30 +++ apps/emqx_bridge_rocketmq/mix.exs | 30 +++ apps/emqx_bridge_s3/mix.exs | 29 +++ apps/emqx_bridge_sqlserver/mix.exs | 29 +++ apps/emqx_bridge_syskeeper/mix.exs | 29 +++ apps/emqx_bridge_tdengine/mix.exs | 30 +++ apps/emqx_bridge_timescale/mix.exs | 29 +++ apps/emqx_cluster_link/mix.exs | 25 +++ apps/emqx_conf/mix.exs | 33 +++ apps/emqx_conf/src/emqx_conf_schema.erl | 2 + apps/emqx_connector/mix.exs | 35 ++++ apps/emqx_connector_aggregator/mix.exs | 25 +++ apps/emqx_ctl/mix.exs | 25 +++ apps/emqx_dashboard/mix.exs | 33 +++ apps/emqx_dashboard_rbac/mix.exs | 25 +++ apps/emqx_dashboard_sso/mix.exs | 29 +++ apps/emqx_ds_shared_sub/mix.exs | 25 +++ apps/emqx_durable_storage/mix.exs | 32 +++ apps/emqx_enterprise/mix.exs | 29 +++ apps/emqx_eviction_agent/mix.exs | 25 +++ apps/emqx_exhook/mix.exs | 29 +++ apps/emqx_ft/mix.exs | 25 +++ apps/emqx_gateway/mix.exs | 29 +++ apps/emqx_gateway_coap/mix.exs | 29 +++ apps/emqx_gateway_exproto/mix.exs | 30 +++ apps/emqx_gateway_gbt32960/mix.exs | 29 +++ apps/emqx_gateway_jt808/mix.exs | 29 +++ apps/emqx_gateway_lwm2m/mix.exs | 29 +++ apps/emqx_gateway_mqttsn/mix.exs | 25 +++ apps/emqx_gateway_ocpp/mix.exs | 30 +++ apps/emqx_gateway_stomp/mix.exs | 29 +++ apps/emqx_gcp_device/mix.exs | 34 +++ apps/emqx_ldap/mix.exs | 26 +++ apps/emqx_license/mix.exs | 25 +++ apps/emqx_machine/mix.exs | 36 ++++ apps/emqx_management/mix.exs | 32 +++ apps/emqx_message_transformation/mix.exs | 29 +++ apps/emqx_modules/mix.exs | 29 +++ apps/emqx_mongodb/mix.exs | 29 +++ apps/emqx_mysql/mix.exs | 29 +++ apps/emqx_node_rebalance/mix.exs | 25 +++ apps/emqx_opentelemetry/mix.exs | 52 +++++ apps/emqx_oracle/mix.exs | 29 +++ apps/emqx_plugins/mix.exs | 28 +++ apps/emqx_postgresql/mix.exs | 29 +++ apps/emqx_prometheus/mix.exs | 32 +++ apps/emqx_psk/mix.exs | 25 +++ apps/emqx_redis/mix.exs | 29 +++ apps/emqx_redis/rebar.config | 2 +- apps/emqx_resource/mix.exs | 32 +++ apps/emqx_retainer/mix.exs | 32 +++ apps/emqx_rule_engine/mix.exs | 35 ++++ apps/emqx_s3/mix.exs | 29 +++ apps/emqx_schema_registry/mix.exs | 32 +++ apps/emqx_schema_validation/mix.exs | 30 +++ apps/emqx_slow_subs/mix.exs | 25 +++ apps/emqx_telemetry/mix.exs | 29 +++ apps/emqx_utils/mix.exs | 29 +++ mix.exs | 196 +++--------------- 98 files changed, 2897 insertions(+), 164 deletions(-) create mode 100644 apps/emqx/mix.exs create mode 100644 apps/emqx_audit/mix.exs create mode 100644 apps/emqx_auth/mix.exs create mode 100644 apps/emqx_auth_ext/mix.exs create mode 100644 apps/emqx_auth_http/mix.exs create mode 100644 apps/emqx_auth_jwt/mix.exs create mode 100644 apps/emqx_auth_ldap/mix.exs create mode 100644 apps/emqx_auth_mnesia/mix.exs create mode 100644 apps/emqx_auth_mongodb/mix.exs create mode 100644 apps/emqx_auth_mysql/mix.exs create mode 100644 apps/emqx_auth_postgresql/mix.exs create mode 100644 apps/emqx_auth_redis/mix.exs create mode 100644 apps/emqx_auto_subscribe/mix.exs create mode 100644 apps/emqx_bridge/mix.exs create mode 100644 apps/emqx_bridge_azure_blob_storage/mix.exs create mode 100644 apps/emqx_bridge_azure_event_hub/mix.exs create mode 100644 apps/emqx_bridge_cassandra/mix.exs create mode 100644 apps/emqx_bridge_clickhouse/mix.exs create mode 100644 apps/emqx_bridge_confluent/mix.exs create mode 100644 apps/emqx_bridge_dynamo/mix.exs create mode 100644 apps/emqx_bridge_es/mix.exs create mode 100644 apps/emqx_bridge_gcp_pubsub/mix.exs create mode 100644 apps/emqx_bridge_greptimedb/mix.exs create mode 100644 apps/emqx_bridge_hstreamdb/mix.exs create mode 100644 apps/emqx_bridge_http/mix.exs create mode 100644 apps/emqx_bridge_influxdb/mix.exs create mode 100644 apps/emqx_bridge_iotdb/mix.exs create mode 100644 apps/emqx_bridge_kafka/mix.exs create mode 100644 apps/emqx_bridge_kinesis/mix.exs create mode 100644 apps/emqx_bridge_matrix/mix.exs create mode 100644 apps/emqx_bridge_mongodb/mix.exs create mode 100644 apps/emqx_bridge_mqtt/mix.exs create mode 100644 apps/emqx_bridge_mysql/mix.exs create mode 100644 apps/emqx_bridge_opents/mix.exs create mode 100644 apps/emqx_bridge_oracle/mix.exs create mode 100644 apps/emqx_bridge_pgsql/mix.exs create mode 100644 apps/emqx_bridge_pulsar/mix.exs create mode 100644 apps/emqx_bridge_rabbitmq/mix.exs create mode 100644 apps/emqx_bridge_redis/mix.exs create mode 100644 apps/emqx_bridge_rocketmq/mix.exs create mode 100644 apps/emqx_bridge_s3/mix.exs create mode 100644 apps/emqx_bridge_sqlserver/mix.exs create mode 100644 apps/emqx_bridge_syskeeper/mix.exs create mode 100644 apps/emqx_bridge_tdengine/mix.exs create mode 100644 apps/emqx_bridge_timescale/mix.exs create mode 100644 apps/emqx_cluster_link/mix.exs create mode 100644 apps/emqx_conf/mix.exs create mode 100644 apps/emqx_connector/mix.exs create mode 100644 apps/emqx_connector_aggregator/mix.exs create mode 100644 apps/emqx_ctl/mix.exs create mode 100644 apps/emqx_dashboard/mix.exs create mode 100644 apps/emqx_dashboard_rbac/mix.exs create mode 100644 apps/emqx_dashboard_sso/mix.exs create mode 100644 apps/emqx_ds_shared_sub/mix.exs create mode 100644 apps/emqx_durable_storage/mix.exs create mode 100644 apps/emqx_enterprise/mix.exs create mode 100644 apps/emqx_eviction_agent/mix.exs create mode 100644 apps/emqx_exhook/mix.exs create mode 100644 apps/emqx_ft/mix.exs create mode 100644 apps/emqx_gateway/mix.exs create mode 100644 apps/emqx_gateway_coap/mix.exs create mode 100644 apps/emqx_gateway_exproto/mix.exs create mode 100644 apps/emqx_gateway_gbt32960/mix.exs create mode 100644 apps/emqx_gateway_jt808/mix.exs create mode 100644 apps/emqx_gateway_lwm2m/mix.exs create mode 100644 apps/emqx_gateway_mqttsn/mix.exs create mode 100644 apps/emqx_gateway_ocpp/mix.exs create mode 100644 apps/emqx_gateway_stomp/mix.exs create mode 100644 apps/emqx_gcp_device/mix.exs create mode 100644 apps/emqx_ldap/mix.exs create mode 100644 apps/emqx_license/mix.exs create mode 100644 apps/emqx_machine/mix.exs create mode 100644 apps/emqx_management/mix.exs create mode 100644 apps/emqx_message_transformation/mix.exs create mode 100644 apps/emqx_modules/mix.exs create mode 100644 apps/emqx_mongodb/mix.exs create mode 100644 apps/emqx_mysql/mix.exs create mode 100644 apps/emqx_node_rebalance/mix.exs create mode 100644 apps/emqx_opentelemetry/mix.exs create mode 100644 apps/emqx_oracle/mix.exs create mode 100644 apps/emqx_plugins/mix.exs create mode 100644 apps/emqx_postgresql/mix.exs create mode 100644 apps/emqx_prometheus/mix.exs create mode 100644 apps/emqx_psk/mix.exs create mode 100644 apps/emqx_redis/mix.exs create mode 100644 apps/emqx_resource/mix.exs create mode 100644 apps/emqx_retainer/mix.exs create mode 100644 apps/emqx_rule_engine/mix.exs create mode 100644 apps/emqx_s3/mix.exs create mode 100644 apps/emqx_schema_registry/mix.exs create mode 100644 apps/emqx_schema_validation/mix.exs create mode 100644 apps/emqx_slow_subs/mix.exs create mode 100644 apps/emqx_telemetry/mix.exs create mode 100644 apps/emqx_utils/mix.exs diff --git a/apps/emqx/mix.exs b/apps/emqx/mix.exs new file mode 100644 index 000000000..95b956c6f --- /dev/null +++ b/apps/emqx/mix.exs @@ -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 diff --git a/apps/emqx_audit/mix.exs b/apps/emqx_audit/mix.exs new file mode 100644 index 000000000..2a736df18 --- /dev/null +++ b/apps/emqx_audit/mix.exs @@ -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 diff --git a/apps/emqx_auth/mix.exs b/apps/emqx_auth/mix.exs new file mode 100644 index 000000000..ef7894518 --- /dev/null +++ b/apps/emqx_auth/mix.exs @@ -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 diff --git a/apps/emqx_auth/src/emqx_authz/emqx_authz_app.erl b/apps/emqx_auth/src/emqx_authz/emqx_authz_app.erl index 7c399ba44..be30500d7 100644 --- a/apps/emqx_auth/src/emqx_authz/emqx_authz_app.erl +++ b/apps/emqx_auth/src/emqx_authz/emqx_authz_app.erl @@ -19,6 +19,8 @@ %% @end %%%------------------------------------------------------------------- +%% TODO: delete this module + -module(emqx_authz_app). -behaviour(application). diff --git a/apps/emqx_auth_ext/mix.exs b/apps/emqx_auth_ext/mix.exs new file mode 100644 index 000000000..951ee0fe8 --- /dev/null +++ b/apps/emqx_auth_ext/mix.exs @@ -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 diff --git a/apps/emqx_auth_http/mix.exs b/apps/emqx_auth_http/mix.exs new file mode 100644 index 000000000..34bb7223d --- /dev/null +++ b/apps/emqx_auth_http/mix.exs @@ -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 diff --git a/apps/emqx_auth_jwt/mix.exs b/apps/emqx_auth_jwt/mix.exs new file mode 100644 index 000000000..55f8b6cde --- /dev/null +++ b/apps/emqx_auth_jwt/mix.exs @@ -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 diff --git a/apps/emqx_auth_ldap/mix.exs b/apps/emqx_auth_ldap/mix.exs new file mode 100644 index 000000000..6dc2763c1 --- /dev/null +++ b/apps/emqx_auth_ldap/mix.exs @@ -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 diff --git a/apps/emqx_auth_mnesia/mix.exs b/apps/emqx_auth_mnesia/mix.exs new file mode 100644 index 000000000..a22b5a7e4 --- /dev/null +++ b/apps/emqx_auth_mnesia/mix.exs @@ -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 diff --git a/apps/emqx_auth_mongodb/mix.exs b/apps/emqx_auth_mongodb/mix.exs new file mode 100644 index 000000000..c059dacbd --- /dev/null +++ b/apps/emqx_auth_mongodb/mix.exs @@ -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 diff --git a/apps/emqx_auth_mysql/mix.exs b/apps/emqx_auth_mysql/mix.exs new file mode 100644 index 000000000..59365c878 --- /dev/null +++ b/apps/emqx_auth_mysql/mix.exs @@ -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 diff --git a/apps/emqx_auth_postgresql/mix.exs b/apps/emqx_auth_postgresql/mix.exs new file mode 100644 index 000000000..6f0cf1cc9 --- /dev/null +++ b/apps/emqx_auth_postgresql/mix.exs @@ -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 diff --git a/apps/emqx_auth_redis/mix.exs b/apps/emqx_auth_redis/mix.exs new file mode 100644 index 000000000..ed3e4fd61 --- /dev/null +++ b/apps/emqx_auth_redis/mix.exs @@ -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 diff --git a/apps/emqx_auto_subscribe/mix.exs b/apps/emqx_auto_subscribe/mix.exs new file mode 100644 index 000000000..2f82be4f5 --- /dev/null +++ b/apps/emqx_auto_subscribe/mix.exs @@ -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 diff --git a/apps/emqx_bridge/mix.exs b/apps/emqx_bridge/mix.exs new file mode 100644 index 000000000..907e3275b --- /dev/null +++ b/apps/emqx_bridge/mix.exs @@ -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 diff --git a/apps/emqx_bridge_azure_blob_storage/mix.exs b/apps/emqx_bridge_azure_blob_storage/mix.exs new file mode 100644 index 000000000..a09399188 --- /dev/null +++ b/apps/emqx_bridge_azure_blob_storage/mix.exs @@ -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 diff --git a/apps/emqx_bridge_azure_event_hub/mix.exs b/apps/emqx_bridge_azure_event_hub/mix.exs new file mode 100644 index 000000000..4e7635a81 --- /dev/null +++ b/apps/emqx_bridge_azure_event_hub/mix.exs @@ -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 diff --git a/apps/emqx_bridge_cassandra/mix.exs b/apps/emqx_bridge_cassandra/mix.exs new file mode 100644 index 000000000..587ea7657 --- /dev/null +++ b/apps/emqx_bridge_cassandra/mix.exs @@ -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 diff --git a/apps/emqx_bridge_clickhouse/mix.exs b/apps/emqx_bridge_clickhouse/mix.exs new file mode 100644 index 000000000..b1bbe2575 --- /dev/null +++ b/apps/emqx_bridge_clickhouse/mix.exs @@ -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 diff --git a/apps/emqx_bridge_confluent/mix.exs b/apps/emqx_bridge_confluent/mix.exs new file mode 100644 index 000000000..37e3dc1b7 --- /dev/null +++ b/apps/emqx_bridge_confluent/mix.exs @@ -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 diff --git a/apps/emqx_bridge_dynamo/mix.exs b/apps/emqx_bridge_dynamo/mix.exs new file mode 100644 index 000000000..270c5e3fd --- /dev/null +++ b/apps/emqx_bridge_dynamo/mix.exs @@ -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 diff --git a/apps/emqx_bridge_es/mix.exs b/apps/emqx_bridge_es/mix.exs new file mode 100644 index 000000000..a52b826ff --- /dev/null +++ b/apps/emqx_bridge_es/mix.exs @@ -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 diff --git a/apps/emqx_bridge_gcp_pubsub/mix.exs b/apps/emqx_bridge_gcp_pubsub/mix.exs new file mode 100644 index 000000000..ecd43a568 --- /dev/null +++ b/apps/emqx_bridge_gcp_pubsub/mix.exs @@ -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 diff --git a/apps/emqx_bridge_greptimedb/mix.exs b/apps/emqx_bridge_greptimedb/mix.exs new file mode 100644 index 000000000..95ba00e3f --- /dev/null +++ b/apps/emqx_bridge_greptimedb/mix.exs @@ -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 diff --git a/apps/emqx_bridge_hstreamdb/mix.exs b/apps/emqx_bridge_hstreamdb/mix.exs new file mode 100644 index 000000000..bbf0aed0f --- /dev/null +++ b/apps/emqx_bridge_hstreamdb/mix.exs @@ -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 diff --git a/apps/emqx_bridge_http/mix.exs b/apps/emqx_bridge_http/mix.exs new file mode 100644 index 000000000..97d82dfc4 --- /dev/null +++ b/apps/emqx_bridge_http/mix.exs @@ -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 diff --git a/apps/emqx_bridge_influxdb/mix.exs b/apps/emqx_bridge_influxdb/mix.exs new file mode 100644 index 000000000..834a5c786 --- /dev/null +++ b/apps/emqx_bridge_influxdb/mix.exs @@ -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 diff --git a/apps/emqx_bridge_iotdb/mix.exs b/apps/emqx_bridge_iotdb/mix.exs new file mode 100644 index 000000000..78841348f --- /dev/null +++ b/apps/emqx_bridge_iotdb/mix.exs @@ -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 diff --git a/apps/emqx_bridge_kafka/mix.exs b/apps/emqx_bridge_kafka/mix.exs new file mode 100644 index 000000000..7fdf0c308 --- /dev/null +++ b/apps/emqx_bridge_kafka/mix.exs @@ -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 diff --git a/apps/emqx_bridge_kinesis/mix.exs b/apps/emqx_bridge_kinesis/mix.exs new file mode 100644 index 000000000..d6b8e39c8 --- /dev/null +++ b/apps/emqx_bridge_kinesis/mix.exs @@ -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 diff --git a/apps/emqx_bridge_matrix/mix.exs b/apps/emqx_bridge_matrix/mix.exs new file mode 100644 index 000000000..7e75816e4 --- /dev/null +++ b/apps/emqx_bridge_matrix/mix.exs @@ -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 diff --git a/apps/emqx_bridge_mongodb/mix.exs b/apps/emqx_bridge_mongodb/mix.exs new file mode 100644 index 000000000..b7edbe4a7 --- /dev/null +++ b/apps/emqx_bridge_mongodb/mix.exs @@ -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 diff --git a/apps/emqx_bridge_mqtt/mix.exs b/apps/emqx_bridge_mqtt/mix.exs new file mode 100644 index 000000000..87af1140f --- /dev/null +++ b/apps/emqx_bridge_mqtt/mix.exs @@ -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 diff --git a/apps/emqx_bridge_mysql/mix.exs b/apps/emqx_bridge_mysql/mix.exs new file mode 100644 index 000000000..3240bffde --- /dev/null +++ b/apps/emqx_bridge_mysql/mix.exs @@ -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 diff --git a/apps/emqx_bridge_opents/mix.exs b/apps/emqx_bridge_opents/mix.exs new file mode 100644 index 000000000..b835ce298 --- /dev/null +++ b/apps/emqx_bridge_opents/mix.exs @@ -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 diff --git a/apps/emqx_bridge_oracle/mix.exs b/apps/emqx_bridge_oracle/mix.exs new file mode 100644 index 000000000..c98b27125 --- /dev/null +++ b/apps/emqx_bridge_oracle/mix.exs @@ -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 diff --git a/apps/emqx_bridge_pgsql/mix.exs b/apps/emqx_bridge_pgsql/mix.exs new file mode 100644 index 000000000..bbdbcfc74 --- /dev/null +++ b/apps/emqx_bridge_pgsql/mix.exs @@ -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 diff --git a/apps/emqx_bridge_pulsar/mix.exs b/apps/emqx_bridge_pulsar/mix.exs new file mode 100644 index 000000000..e4763c9c4 --- /dev/null +++ b/apps/emqx_bridge_pulsar/mix.exs @@ -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 diff --git a/apps/emqx_bridge_rabbitmq/mix.exs b/apps/emqx_bridge_rabbitmq/mix.exs new file mode 100644 index 000000000..906018d41 --- /dev/null +++ b/apps/emqx_bridge_rabbitmq/mix.exs @@ -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 diff --git a/apps/emqx_bridge_redis/mix.exs b/apps/emqx_bridge_redis/mix.exs new file mode 100644 index 000000000..bd3fc71b2 --- /dev/null +++ b/apps/emqx_bridge_redis/mix.exs @@ -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 diff --git a/apps/emqx_bridge_rocketmq/mix.exs b/apps/emqx_bridge_rocketmq/mix.exs new file mode 100644 index 000000000..9468ba5db --- /dev/null +++ b/apps/emqx_bridge_rocketmq/mix.exs @@ -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 diff --git a/apps/emqx_bridge_s3/mix.exs b/apps/emqx_bridge_s3/mix.exs new file mode 100644 index 000000000..6ca40ca93 --- /dev/null +++ b/apps/emqx_bridge_s3/mix.exs @@ -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 diff --git a/apps/emqx_bridge_sqlserver/mix.exs b/apps/emqx_bridge_sqlserver/mix.exs new file mode 100644 index 000000000..5494c37e0 --- /dev/null +++ b/apps/emqx_bridge_sqlserver/mix.exs @@ -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 diff --git a/apps/emqx_bridge_syskeeper/mix.exs b/apps/emqx_bridge_syskeeper/mix.exs new file mode 100644 index 000000000..aa04b368b --- /dev/null +++ b/apps/emqx_bridge_syskeeper/mix.exs @@ -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 diff --git a/apps/emqx_bridge_tdengine/mix.exs b/apps/emqx_bridge_tdengine/mix.exs new file mode 100644 index 000000000..ef1901546 --- /dev/null +++ b/apps/emqx_bridge_tdengine/mix.exs @@ -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 diff --git a/apps/emqx_bridge_timescale/mix.exs b/apps/emqx_bridge_timescale/mix.exs new file mode 100644 index 000000000..cea78429a --- /dev/null +++ b/apps/emqx_bridge_timescale/mix.exs @@ -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 diff --git a/apps/emqx_cluster_link/mix.exs b/apps/emqx_cluster_link/mix.exs new file mode 100644 index 000000000..74c4184b8 --- /dev/null +++ b/apps/emqx_cluster_link/mix.exs @@ -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 diff --git a/apps/emqx_conf/mix.exs b/apps/emqx_conf/mix.exs new file mode 100644 index 000000000..f022b3cb1 --- /dev/null +++ b/apps/emqx_conf/mix.exs @@ -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 diff --git a/apps/emqx_conf/src/emqx_conf_schema.erl b/apps/emqx_conf/src/emqx_conf_schema.erl index 5c1bab4ff..77591d2de 100644 --- a/apps/emqx_conf/src/emqx_conf_schema.erl +++ b/apps/emqx_conf/src/emqx_conf_schema.erl @@ -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 diff --git a/apps/emqx_connector/mix.exs b/apps/emqx_connector/mix.exs new file mode 100644 index 000000000..3136c4519 --- /dev/null +++ b/apps/emqx_connector/mix.exs @@ -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 diff --git a/apps/emqx_connector_aggregator/mix.exs b/apps/emqx_connector_aggregator/mix.exs new file mode 100644 index 000000000..7350134a1 --- /dev/null +++ b/apps/emqx_connector_aggregator/mix.exs @@ -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 diff --git a/apps/emqx_ctl/mix.exs b/apps/emqx_ctl/mix.exs new file mode 100644 index 000000000..42823604d --- /dev/null +++ b/apps/emqx_ctl/mix.exs @@ -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 diff --git a/apps/emqx_dashboard/mix.exs b/apps/emqx_dashboard/mix.exs new file mode 100644 index 000000000..cd48ab009 --- /dev/null +++ b/apps/emqx_dashboard/mix.exs @@ -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 diff --git a/apps/emqx_dashboard_rbac/mix.exs b/apps/emqx_dashboard_rbac/mix.exs new file mode 100644 index 000000000..f0c3bddea --- /dev/null +++ b/apps/emqx_dashboard_rbac/mix.exs @@ -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 diff --git a/apps/emqx_dashboard_sso/mix.exs b/apps/emqx_dashboard_sso/mix.exs new file mode 100644 index 000000000..291bef0ae --- /dev/null +++ b/apps/emqx_dashboard_sso/mix.exs @@ -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 diff --git a/apps/emqx_ds_shared_sub/mix.exs b/apps/emqx_ds_shared_sub/mix.exs new file mode 100644 index 000000000..9903d86bf --- /dev/null +++ b/apps/emqx_ds_shared_sub/mix.exs @@ -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 diff --git a/apps/emqx_durable_storage/mix.exs b/apps/emqx_durable_storage/mix.exs new file mode 100644 index 000000000..884760a82 --- /dev/null +++ b/apps/emqx_durable_storage/mix.exs @@ -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 diff --git a/apps/emqx_enterprise/mix.exs b/apps/emqx_enterprise/mix.exs new file mode 100644 index 000000000..eb149fcd2 --- /dev/null +++ b/apps/emqx_enterprise/mix.exs @@ -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 diff --git a/apps/emqx_eviction_agent/mix.exs b/apps/emqx_eviction_agent/mix.exs new file mode 100644 index 000000000..7f9abfb69 --- /dev/null +++ b/apps/emqx_eviction_agent/mix.exs @@ -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 diff --git a/apps/emqx_exhook/mix.exs b/apps/emqx_exhook/mix.exs new file mode 100644 index 000000000..687d681ab --- /dev/null +++ b/apps/emqx_exhook/mix.exs @@ -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 diff --git a/apps/emqx_ft/mix.exs b/apps/emqx_ft/mix.exs new file mode 100644 index 000000000..37cd83693 --- /dev/null +++ b/apps/emqx_ft/mix.exs @@ -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 diff --git a/apps/emqx_gateway/mix.exs b/apps/emqx_gateway/mix.exs new file mode 100644 index 000000000..ffb4f1786 --- /dev/null +++ b/apps/emqx_gateway/mix.exs @@ -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 diff --git a/apps/emqx_gateway_coap/mix.exs b/apps/emqx_gateway_coap/mix.exs new file mode 100644 index 000000000..8c7de2d6c --- /dev/null +++ b/apps/emqx_gateway_coap/mix.exs @@ -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 diff --git a/apps/emqx_gateway_exproto/mix.exs b/apps/emqx_gateway_exproto/mix.exs new file mode 100644 index 000000000..ea27e3d85 --- /dev/null +++ b/apps/emqx_gateway_exproto/mix.exs @@ -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 diff --git a/apps/emqx_gateway_gbt32960/mix.exs b/apps/emqx_gateway_gbt32960/mix.exs new file mode 100644 index 000000000..8c743605a --- /dev/null +++ b/apps/emqx_gateway_gbt32960/mix.exs @@ -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 diff --git a/apps/emqx_gateway_jt808/mix.exs b/apps/emqx_gateway_jt808/mix.exs new file mode 100644 index 000000000..fce07c4e7 --- /dev/null +++ b/apps/emqx_gateway_jt808/mix.exs @@ -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 diff --git a/apps/emqx_gateway_lwm2m/mix.exs b/apps/emqx_gateway_lwm2m/mix.exs new file mode 100644 index 000000000..83df6853e --- /dev/null +++ b/apps/emqx_gateway_lwm2m/mix.exs @@ -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 diff --git a/apps/emqx_gateway_mqttsn/mix.exs b/apps/emqx_gateway_mqttsn/mix.exs new file mode 100644 index 000000000..967af5cf3 --- /dev/null +++ b/apps/emqx_gateway_mqttsn/mix.exs @@ -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 diff --git a/apps/emqx_gateway_ocpp/mix.exs b/apps/emqx_gateway_ocpp/mix.exs new file mode 100644 index 000000000..f2b796493 --- /dev/null +++ b/apps/emqx_gateway_ocpp/mix.exs @@ -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 diff --git a/apps/emqx_gateway_stomp/mix.exs b/apps/emqx_gateway_stomp/mix.exs new file mode 100644 index 000000000..703418bf8 --- /dev/null +++ b/apps/emqx_gateway_stomp/mix.exs @@ -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 diff --git a/apps/emqx_gcp_device/mix.exs b/apps/emqx_gcp_device/mix.exs new file mode 100644 index 000000000..d5d74d1aa --- /dev/null +++ b/apps/emqx_gcp_device/mix.exs @@ -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 diff --git a/apps/emqx_ldap/mix.exs b/apps/emqx_ldap/mix.exs new file mode 100644 index 000000000..6112c06f2 --- /dev/null +++ b/apps/emqx_ldap/mix.exs @@ -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 diff --git a/apps/emqx_license/mix.exs b/apps/emqx_license/mix.exs new file mode 100644 index 000000000..b7d9b789a --- /dev/null +++ b/apps/emqx_license/mix.exs @@ -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 diff --git a/apps/emqx_machine/mix.exs b/apps/emqx_machine/mix.exs new file mode 100644 index 000000000..e46a1e601 --- /dev/null +++ b/apps/emqx_machine/mix.exs @@ -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 diff --git a/apps/emqx_management/mix.exs b/apps/emqx_management/mix.exs new file mode 100644 index 000000000..5ad96f77f --- /dev/null +++ b/apps/emqx_management/mix.exs @@ -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 diff --git a/apps/emqx_message_transformation/mix.exs b/apps/emqx_message_transformation/mix.exs new file mode 100644 index 000000000..ee064ab25 --- /dev/null +++ b/apps/emqx_message_transformation/mix.exs @@ -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 diff --git a/apps/emqx_modules/mix.exs b/apps/emqx_modules/mix.exs new file mode 100644 index 000000000..de8dcc77e --- /dev/null +++ b/apps/emqx_modules/mix.exs @@ -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 diff --git a/apps/emqx_mongodb/mix.exs b/apps/emqx_mongodb/mix.exs new file mode 100644 index 000000000..081e237d7 --- /dev/null +++ b/apps/emqx_mongodb/mix.exs @@ -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 diff --git a/apps/emqx_mysql/mix.exs b/apps/emqx_mysql/mix.exs new file mode 100644 index 000000000..ec3cb8166 --- /dev/null +++ b/apps/emqx_mysql/mix.exs @@ -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 diff --git a/apps/emqx_node_rebalance/mix.exs b/apps/emqx_node_rebalance/mix.exs new file mode 100644 index 000000000..53193300e --- /dev/null +++ b/apps/emqx_node_rebalance/mix.exs @@ -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 diff --git a/apps/emqx_opentelemetry/mix.exs b/apps/emqx_opentelemetry/mix.exs new file mode 100644 index 000000000..e919574c0 --- /dev/null +++ b/apps/emqx_opentelemetry/mix.exs @@ -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 diff --git a/apps/emqx_oracle/mix.exs b/apps/emqx_oracle/mix.exs new file mode 100644 index 000000000..35865ae4b --- /dev/null +++ b/apps/emqx_oracle/mix.exs @@ -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 diff --git a/apps/emqx_plugins/mix.exs b/apps/emqx_plugins/mix.exs new file mode 100644 index 000000000..d877f3dc7 --- /dev/null +++ b/apps/emqx_plugins/mix.exs @@ -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 diff --git a/apps/emqx_postgresql/mix.exs b/apps/emqx_postgresql/mix.exs new file mode 100644 index 000000000..2fdc42b98 --- /dev/null +++ b/apps/emqx_postgresql/mix.exs @@ -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 diff --git a/apps/emqx_prometheus/mix.exs b/apps/emqx_prometheus/mix.exs new file mode 100644 index 000000000..62784b491 --- /dev/null +++ b/apps/emqx_prometheus/mix.exs @@ -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 diff --git a/apps/emqx_psk/mix.exs b/apps/emqx_psk/mix.exs new file mode 100644 index 000000000..fff6f927c --- /dev/null +++ b/apps/emqx_psk/mix.exs @@ -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 diff --git a/apps/emqx_redis/mix.exs b/apps/emqx_redis/mix.exs new file mode 100644 index 000000000..af05ea3b6 --- /dev/null +++ b/apps/emqx_redis/mix.exs @@ -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 diff --git a/apps/emqx_redis/rebar.config b/apps/emqx_redis/rebar.config index e495a4eb6..524155c1d 100644 --- a/apps/emqx_redis/rebar.config +++ b/apps/emqx_redis/rebar.config @@ -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"}} ]}. diff --git a/apps/emqx_resource/mix.exs b/apps/emqx_resource/mix.exs new file mode 100644 index 000000000..1bf2cfea2 --- /dev/null +++ b/apps/emqx_resource/mix.exs @@ -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 diff --git a/apps/emqx_retainer/mix.exs b/apps/emqx_retainer/mix.exs new file mode 100644 index 000000000..946ce2c60 --- /dev/null +++ b/apps/emqx_retainer/mix.exs @@ -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 diff --git a/apps/emqx_rule_engine/mix.exs b/apps/emqx_rule_engine/mix.exs new file mode 100644 index 000000000..15fcd5f6b --- /dev/null +++ b/apps/emqx_rule_engine/mix.exs @@ -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 diff --git a/apps/emqx_s3/mix.exs b/apps/emqx_s3/mix.exs new file mode 100644 index 000000000..bbb23279e --- /dev/null +++ b/apps/emqx_s3/mix.exs @@ -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 diff --git a/apps/emqx_schema_registry/mix.exs b/apps/emqx_schema_registry/mix.exs new file mode 100644 index 000000000..3f4e4b430 --- /dev/null +++ b/apps/emqx_schema_registry/mix.exs @@ -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 diff --git a/apps/emqx_schema_validation/mix.exs b/apps/emqx_schema_validation/mix.exs new file mode 100644 index 000000000..442b076ac --- /dev/null +++ b/apps/emqx_schema_validation/mix.exs @@ -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 diff --git a/apps/emqx_slow_subs/mix.exs b/apps/emqx_slow_subs/mix.exs new file mode 100644 index 000000000..1ea972c4c --- /dev/null +++ b/apps/emqx_slow_subs/mix.exs @@ -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 diff --git a/apps/emqx_telemetry/mix.exs b/apps/emqx_telemetry/mix.exs new file mode 100644 index 000000000..ab084f447 --- /dev/null +++ b/apps/emqx_telemetry/mix.exs @@ -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 diff --git a/apps/emqx_utils/mix.exs b/apps/emqx_utils/mix.exs new file mode 100644 index 000000000..3a4907e56 --- /dev/null +++ b/apps/emqx_utils/mix.exs @@ -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 diff --git a/mix.exs b/mix.exs index fabb446cf..daa33800d 100644 --- a/mix.exs +++ b/mix.exs @@ -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, ©_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"