wip: app-deploy dependency tracking (incomplete — needs endpoint wiring)
Half-finished feature for declaring and resolving app dependencies
when deploying. Preserved here for later finishing.
What's done:
- app-templates.js: dependsOn declarations on 7 templates
(sonarr, radarr, lidarr, readarr, bazarr, overseerr, tautulli).
- routes/apps/deploy.js: helper functions checkDependencies(),
topologicalSortTemplates(), buildDefaultDepConfig().
- routes/recipes/deploy.js: wait-for-health between recipe components
via appsHelpers.waitForHealthCheck() (verify export exists).
- status/js/app-selector.js: dependency-warning modal injected into
app-selector flow, with a "deploy with deps" checkbox.
What's missing (blockers for merge):
- POST /api/v1/apps/check-dependencies endpoint — frontend calls it
(app-selector.js around line 395) but the route is never registered.
Helper functions exist; just need to expose them. Frontend currently
404s and falls back to plain deploy (line 401), so the dep-aware
flow is non-functional.
- Auto-deploy-with-dependencies handler in the modal — checkbox
exists but nothing wires the "yes deploy them" choice into actually
deploying the listed dependencies before the target app.
- No tests around topological sort behaviour (circular deps,
diamond deps, missing deps).
Lifted out of wip/cloud-backups-and-history when the cloud-backups +
resource-history features were merged to main (commit d81d118).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -158,6 +158,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/api/v3/system/status",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'URL_BASE',
|
||||
dependsOn: ["prowlarr", "qbittorrent"],
|
||||
setupInstructions: [
|
||||
"Configure download clients (qBittorrent, etc.)",
|
||||
"Add indexers for content discovery",
|
||||
@@ -190,7 +191,8 @@ const APP_TEMPLATES = {
|
||||
defaultPort: 7878,
|
||||
healthCheck: "/api/v3/system/status",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'URL_BASE'
|
||||
urlBaseEnv: 'URL_BASE',
|
||||
dependsOn: ["prowlarr", "qbittorrent"]
|
||||
},
|
||||
|
||||
"prowlarr": {
|
||||
@@ -1172,6 +1174,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/api/v1/system/status",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'URL_BASE',
|
||||
dependsOn: ["prowlarr", "qbittorrent"],
|
||||
setupInstructions: [
|
||||
"Configure download clients",
|
||||
"Add indexers",
|
||||
@@ -1205,6 +1208,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/api/v1/system/status",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'URL_BASE',
|
||||
dependsOn: ["prowlarr", "qbittorrent"],
|
||||
setupInstructions: [
|
||||
"Configure download clients",
|
||||
"Add indexers for books",
|
||||
@@ -1238,6 +1242,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'BASE_URL',
|
||||
dependsOn: ["sonarr", "radarr"],
|
||||
setupInstructions: [
|
||||
"Connect to Sonarr and Radarr",
|
||||
"Configure subtitle providers",
|
||||
@@ -1266,6 +1271,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/api/v1/status",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'BASE_PATH',
|
||||
dependsOn: ["sonarr", "radarr"],
|
||||
setupInstructions: [
|
||||
"Connect to Plex, Jellyfin, or Emby server",
|
||||
"Link Sonarr and Radarr",
|
||||
@@ -1295,6 +1301,7 @@ const APP_TEMPLATES = {
|
||||
healthCheck: "/",
|
||||
subpathSupport: 'native',
|
||||
urlBaseEnv: 'TAUTULLI_HTTP_ROOT',
|
||||
dependsOn: ["plex"],
|
||||
setupInstructions: [
|
||||
"Connect to Plex server",
|
||||
"Configure notifications",
|
||||
|
||||
Reference in New Issue
Block a user