-
Notifications
You must be signed in to change notification settings - Fork 19
Add Gradle Plugin #479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Gradle Plugin #479
Conversation
This comment was marked as off-topic.
This comment was marked as off-topic.
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
...-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateSvgImageVectorTask.kt
Outdated
Show resolved
Hide resolved
...-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateSvgImageVectorTask.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
This comment was marked as off-topic.
This comment was marked as off-topic.
1 similar comment
|
Warning There is an error in the Gemini Code Assist config file for this repository at |
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
This comment was marked as off-topic.
This comment was marked as off-topic.
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
|
I'll review the rest carefully later. |
60897af to
6a074c8
Compare
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieConfig.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieConfig.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
|
@jonapoul hello, thank you for contribution ❤️ |
|
@egorikftp I'll be honest - it completely slipped my mind! Will take another look over the next few days |
|
Reworked a big chunk of the PR (finally!) - should be good for re-review now |
|
@Goooler could you please take a look? 🙂 |
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Outdated
Show resolved
Hide resolved
|
@egorikftp I can't reply to the comment directly but the compose dependency is only there to verify that the project compiles once the codegen has been run. It's not being auto-added to any project outside of unit tests |
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Show resolved
Hide resolved
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
...le-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
...gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Outdated
Show resolved
Hide resolved
|
@Goooler is it finalized from your side? 🙂 |
tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt
Show resolved
Hide resolved
...le-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt
Outdated
Show resolved
Hide resolved
…kyrie/gradle/Utils.kt
…kyrie/gradle/ValkyrieGradlePluginTest.kt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new Gradle plugin for Valkyrie that enables automatic generation of Kotlin ImageVector accessors from SVG and Android drawable XML files during the build process. The plugin integrates with Kotlin JVM, Android, and Kotlin Multiplatform projects, providing build-time code generation capabilities.
Key changes:
- New Gradle plugin with task registration and source set integration
- Comprehensive test suite covering various project configurations (JVM, Android, KMP)
- Integration with Kotlin compilation tasks and IDE sync
Reviewed Changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePlugin.kt | Main plugin implementation with task registration and lifecycle hooks |
| tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieExtension.kt | Configuration DSL interface for plugin users |
| tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/GenerateImageVectorsTask.kt | Gradle task implementation for generating ImageVector code |
| tools/gradle-plugin/src/main/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt | Utility functions for package resolution and source set discovery |
| tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/ValkyrieGradlePluginTest.kt | Comprehensive test suite covering plugin functionality |
| tools/gradle-plugin/src/test/kotlin/io/github/composegears/valkyrie/gradle/Utils.kt | Test utilities for Gradle test kit |
| tools/gradle-plugin/build.gradle.kts | Build configuration for the gradle plugin module |
| gradle/libs.versions.toml | Added AGP and compose-ui dependency declarations |
| sdk/core/extensions/src/jvmMain/kotlin/io/github/composegears/valkyrie/sdk/core/extensions/PathUtils.kt | Modified writeToKt to return Path for gradle task usage |
| settings.gradle.kts | Included gradle-plugin module in build |
| components/test/coverage/build.gradle.kts | Added gradle-plugin to coverage reports |
| README.md | Updated to reflect Gradle plugin availability |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@jonapoul thanks so much for your contribution on the project! ❤️ |
|
We got there in the end! |
As mentioned in #28, there hasn't yet been a gradle plugin to add to this project. Main use case for me is to help automate the generation logic.
Here's my initial stab at it - it's maybe not 100% fully featured but I thought I'd put it out there and see what people think. There are a few test cases to show basic usage too.
One thing to be aware of: it depends on the various
componentsmodules. So if/when you publish the gradle plugin, you'll either need to:The second one will be a fair bit more complicated than the one you've already done in the CLI app, but it might be possible. Publishing them all is probably best though.