Add convinence method which allows resolving plugin projection directories from SmithyBuild task instances #140
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
Currently, the standardized method to resolve a given projection + plugin's path is via the
SmithyExtension
methodgetPluginProjectionPath
. This method will return aProvider<Path>
based on theoutputDirectory
property defined in the extension.This pull request adds a similar convenience method on the SmithBuildTask implementation itself. The referenced location is functionally the same in most normal setups. In Gradle, utilizing a provider that is based off of the task implementation's
DirectoryProperty
instead of the extension'sDirectoryProperty
, even if the task's instance is bound to the extension's instance, will express the implicit dependency between task definitions.That is, running
./gradlew copyOutput
on this task implementation will not execute thesmithyBuild
task:Correct behavior requires an explicit dependency:
With this update, this will work as expected and express the dependency upon
smithyBuild
correctly:In the implementaiton, I chose to express it as a
Provider<Directory>
instead ofProvider<Path>
because utilizing the Gradle-providedDirectory
and similar api definitions aid in further idiomatic resolution of child directories and files over the Path class.Testing
Links
N/A
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.