From 745280e9fb4b9f4d5c67741775c2551695449f19 Mon Sep 17 00:00:00 2001 From: Zack Siri Date: Thu, 30 Jan 2025 15:00:15 +0700 Subject: [PATCH] clean up children into a private function --- lib/uplink/application.ex | 59 ++++++++++++++++++++------------------- mix.lock | 2 +- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/lib/uplink/application.ex b/lib/uplink/application.ex index 3c53ac6..d9a42ce 100644 --- a/lib/uplink/application.ex +++ b/lib/uplink/application.ex @@ -10,8 +10,20 @@ defmodule Uplink.Application do require Logger def start(_type, _args) do + children = children(System.get_env("MIX_TASK")) + + opts = [strategy: :one_for_one, name: Uplink.Supervisor] + + Supervisor.start_link(children, opts) + end + + defp children("opsmo.embed"), do: [] + + defp children(_) do %{key: key, cert: cert} = Web.Certificate.generate() + topologies = Application.get_env(:libcluster, :topologies, []) + pipeline_supervisor_config = Application.get_env(:uplink, @pipeline_supervisor, []) @@ -26,33 +38,24 @@ defmodule Uplink.Application do port = Keyword.get(router_config, :port) internal_port = Keyword.get(internal_router_config, :port) - topologies = Application.get_env(:libcluster, :topologies, []) - - children = - [ - {Uplink.Cache, []}, - {Cluster.Supervisor, [topologies, [name: Uplink.ClusterSupervisor]]}, - {Task.Supervisor, name: Uplink.TaskSupervisor}, - {Plug.Cowboy, - plug: Uplink.Internal, scheme: :http, port: internal_port}, - {Pogo.DynamicSupervisor, - name: @pipeline_supervisor, - scope: :uplink, - sync_interval: sync_interval}, - {Uplink.Monitors, []}, - { - Plug.Cowboy, - plug: Uplink.Router, - scheme: :https, - port: port, - key: {:RSAPrivateKey, key}, - cert: cert - }, - {Uplink.Data.Provisioner, []}, - Opsmo.spec(Opsmo.CRPM) - ] - - opts = [strategy: :one_for_one, name: Uplink.Supervisor] - Supervisor.start_link(children, opts) + [ + {Uplink.Cache, []}, + {Cluster.Supervisor, [topologies, [name: Uplink.ClusterSupervisor]]}, + {Task.Supervisor, name: Uplink.TaskSupervisor}, + {Plug.Cowboy, plug: Uplink.Internal, scheme: :http, port: internal_port}, + {Pogo.DynamicSupervisor, + name: @pipeline_supervisor, scope: :uplink, sync_interval: sync_interval}, + {Uplink.Monitors, []}, + { + Plug.Cowboy, + plug: Uplink.Router, + scheme: :https, + port: port, + key: {:RSAPrivateKey, key}, + cert: cert + }, + {Uplink.Data.Provisioner, []}, + Opsmo.spec(Opsmo.CRPM) + ] end end diff --git a/mix.lock b/mix.lock index 35854d0..ae063d2 100644 --- a/mix.lock +++ b/mix.lock @@ -45,7 +45,7 @@ "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, "nx": {:hex, :nx, "0.9.2", "17563029c01bf749aad3c31234326d7665abd0acc33ee2acbe531a4759f29a8a", [:mix], [{:complex, "~> 0.5", [hex: :complex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "914d74741617d8103de8ab1f8c880353e555263e1c397b8a1109f79a3716557f"}, "oban": {:hex, :oban, "2.19.1", "fc376dcb04782973e384ce675539271363eef65222b23b2a8611e78c0744e5f7", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:igniter, "~> 0.5", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5f27ba9e79b9af623dacd79d597504176e8a7d24f3f8b5570ead2f6cedd3c5ec"}, - "opsmo": {:hex, :opsmo, "0.3.12", "0f36732b142c473e45b0fdf845e52e111469ec38c51a05d4945c22d3995b6ebd", [:mix], [{:axon, "~> 0.7", [hex: :axon, repo: "hexpm", optional: false]}, {:nx, "~> 0.9", [hex: :nx, repo: "hexpm", optional: false]}, {:req, "~> 0.5.0", [hex: :req, repo: "hexpm", optional: false]}, {:safetensors, "~> 0.1", [hex: :safetensors, repo: "hexpm", optional: false]}], "hexpm", "590afb32fc9cb17ae901bf7269f4f4eea70753d6cdc3331934d7ded4ec4fc352"}, + "opsmo": {:hex, :opsmo, "0.3.13", "5b29fd2225bee02e8a07b93fd42e6990cfa4fb4778dbc15d44226820c3bc2b92", [:mix], [{:axon, "~> 0.7", [hex: :axon, repo: "hexpm", optional: false]}, {:nx, "~> 0.9", [hex: :nx, repo: "hexpm", optional: false]}, {:req, "~> 0.5.0", [hex: :req, repo: "hexpm", optional: false]}, {:safetensors, "~> 0.1", [hex: :safetensors, repo: "hexpm", optional: false]}], "hexpm", "ffce3ebf1c18e6ce48133c34e0cf06a04cfe8d1f946afde530360178914f27a1"}, "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, "plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"}, "plug_cowboy": {:hex, :plug_cowboy, "2.7.2", "fdadb973799ae691bf9ecad99125b16625b1c6039999da5fe544d99218e662e4", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "245d8a11ee2306094840c000e8816f0cbed69a23fc0ac2bcf8d7835ae019bb2f"},