Repository navigation
feat: use plugin manifest - #4469
Conversation
93e4484 to
06f41ee
Compare
|
Commit: 8acf592
35 interesting tests: 13 RECOVERED, 11 flaky, 10 KNOWN, 1 SKIP
Top 50 slowest tests (at least 2 minutes):
|
06f41ee to
11fb319
Compare
pkosiec
left a comment
There was a problem hiding this comment.
Overall LGTM - tested locally build CLI with https://github.com/databricks/appkit/pull/82/changes.
(that was a high level code review only, as there's a lot of detailed databricks.yml generator logic and resource listers)
| // pluginOwnedPaths maps plugin names to directories they own. | ||
| // When a plugin is not selected, its owned paths are removed from the project. | ||
| var pluginOwnedPaths = map[string][]string{ | ||
| "analytics": {"config/queries"}, | ||
| } |
There was a problem hiding this comment.
It would be awesome to specify that somewhere on the template side and not hardcode it on CLI side 🤔 maybe not for now but let's at least create a follow-up task to not forget about the behavior? WDYT?
(I believe we might need to change the paths in future if we wanted to run two separate analytics plugins, same with lakebase or so - so the path should contain plugin instance name or something like that?)
| "strings" | ||
| ) | ||
|
|
||
| const ManifestFileName = "appkit.plugins.json" |
There was a problem hiding this comment.
Can we rename it to appkit.template.json or template.appkit.json or sth like that? 🙏 as this manifest is mainly template-focused
53032af to
8acf592
Compare
…y files after template rendering (#4549) ## Changes - Show setup notes for plugins which have such instructions (needed for Lakebase plugin temporarily) - Remove hardcoded paths for analytics plugin - this will be handled purely by Go templates in the template itself - Remove empty files and directories after template rendering - Setup listers for `postgres` resource - ~Run "postinit" npm command in context of template if it exists~ - reverted as we don't need it for now Those changes need to be synchronized with AppKit where we add the `templatePaths` property in the manifest. ## Why - We're introducing new plugins, and depending on them, we need to configure the dynamic template. The hardcoded solution is not scalable, as I pointed out here: #4469 (comment) See also https://databricks.atlassian.net/browse/LKB-9681 ## Screenshot <img width="1461" height="738" alt="image" src="https://github.com/user-attachments/assets/966f8f84-94a4-4d4a-856e-7f5cdc703a57" /> ## Demo (just the listers for future Lakebase plugin changes databricks/appkit#132) https://github.com/user-attachments/assets/c745baad-662b-4f82-b197-ed95fcb89ef7
## Changes <!-- Brief summary of your changes that is easy to understand --> - Replace the hardcoded features package with a manifest-driven system that reads appkit.plugins.json from templates, enabling templates to declaratively define their plugins, resources, and dependencies without CLI code changes - Add Helm-style --set flag (--set plugin.resourceKey.field=value) for non-interactive resource configuration, replacing the static --warehouse-id flag - Introduce interactive resource pickers for all 11 resource types (SQL warehouses, jobs, serving endpoints, secrets, databases, genie spaces, volumes, UC functions, UC connections, vector search indexes, experiments) with multi-step pickers for hierarchical resources (catalog → schema → volume/function, instance → database, scope → key) and back-navigation support ## Key design decisions - **resourceKey** is the unique identifier — not type. This allows multiple resources of the same type per plugin (e.g., two genie spaces with different keys) - **appResourceSpecs** data-driven map — Centralizes the mapping from manifest resource types to DABs YAML structure, eliminating per-type switch statements - Templates without appkit.plugins.json work gracefully — The app is created normally, just without resource configuration - **app** resource type is filtered out at runtime (with TODOs) until DABs supports it as an app resource --------- Co-authored-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
…y files after template rendering (#4549) ## Changes - Show setup notes for plugins which have such instructions (needed for Lakebase plugin temporarily) - Remove hardcoded paths for analytics plugin - this will be handled purely by Go templates in the template itself - Remove empty files and directories after template rendering - Setup listers for `postgres` resource - ~Run "postinit" npm command in context of template if it exists~ - reverted as we don't need it for now Those changes need to be synchronized with AppKit where we add the `templatePaths` property in the manifest. ## Why - We're introducing new plugins, and depending on them, we need to configure the dynamic template. The hardcoded solution is not scalable, as I pointed out here: #4469 (comment) See also https://databricks.atlassian.net/browse/LKB-9681 ## Screenshot <img width="1461" height="738" alt="image" src="https://github.com/user-attachments/assets/966f8f84-94a4-4d4a-856e-7f5cdc703a57" /> ## Demo (just the listers for future Lakebase plugin changes databricks/appkit#132) https://github.com/user-attachments/assets/c745baad-662b-4f82-b197-ed95fcb89ef7
Changes
Key design decisions