Skip to content

F-070: design uniform target plugins API#184

Merged
stepango merged 1 commit into
v2from
forma/F-070-target-plugins-design
Jul 19, 2026
Merged

F-070: design uniform target plugins API#184
stepango merged 1 commit into
v2from
forma/F-070-target-plugins-design

Conversation

@stepango

Copy link
Copy Markdown
Collaborator

Summary

  • Accept design for uniform external Gradle plugins on Forma targets: single plugins: TargetPlugins argument on every target DSL.
  • Deprecate chain UX (TargetBuilder.withPlugin / PluginWrapper) while keeping catalog dependency-driven plugins (KSP) and built-in features separate.
  • Prefer single-arg config for complex cases; separate target types only when a plugin creates a new role.
  • Board: F-070 done, F-071–F-073 todo (P7). Unblocks GH Documentation for external plugins configuration #36 docs story.

Design

See docs/TARGET-PLUGINS.md.

Target shape (end state)

androidRes(
    packageName = "",
    dependencies = deps(androidx.navigation),
    plugins = plugins(
        plugin("androidx.navigation.safeargs.kotlin"),
    ),
)

androidBinary(
    /**/,
    plugins = plugins(
        plugin("com.google.gms.google-services"),
        plugin("com.google.firebase.crashlytics", dependencies = google.firebase) {
            mappingFileUploadEnabled = false
        },
    ),
)

Test plan

  • Docs-only — no product code
  • Follow-up F-071 implements API + wires DSLs

Document Mode 1/2/3 plugin model and deprecate chain-based
TargetBuilder.withPlugin in favor of a single plugins arg on
every target definition. Board: F-071–F-073 implementation.
@stepango
stepango merged commit 84c0852 into v2 Jul 19, 2026
8 checks passed
@stepango
stepango deleted the forma/F-070-target-plugins-design branch July 19, 2026 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant