Skip to content

Forma Target: Implement plugin publish configuration #132

@stepango

Description

@stepango

Currently, the plugin publishing configuration does not benefit from Forma concept. Ideally instead of following the code:

ext {
    set("group", "tools.forma")
    set("version", "0.1.3")
    set("tags", listOf("kotlin", "android", "structure", "target", "rules", "project"))
    set("website", "https://forma.tools/")
    set("vcsUrl", "https://github.com/formatools/forma.git")
    set("displayName", "Forma - Meta Build System with Gradle and Android support")
    set("description", "Best way to structure your Gradle Project")
}
gradlePlugin {
    website.set(rootProject.ext["website"] as String)
    vcsUrl.set(rootProject.ext["vcsUrl"] as String)
    plugins {
        create(name) {
            id = "$group.$name"
            displayName = rootProject.ext["displayName"] as String
            description = rootProject.ext["description"] as String
            implementationClass = "$id.plugin.FormaPlugin"
            @Suppress("UNCHECKED_CAST")
            tags.set(rootProject.ext["tags"] as List<String>)
        }
    }
}

We want to implement smth like

// root build.gradle
formaPluginConfiguration {
  group = "tools.forma"
  website = "..."
...
}

```kotlin
// plugin build.gradle
gradlePlugin(
  name = "android"
  description = " Bla bla"
  implementationClass = "plugins.FormaPlugin",
  extraTags = listOf(...)
  ...
)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestfeature requestNecessary features for developmenthelp wantedExtra attention is needed

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions