Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
WIP

  1. … 21 more files in changeset.
Move managed factories to a registry

  1. … 38 more files in changeset.
Move managed factories to a registry

  1. … 39 more files in changeset.
Move managed factories to a registry

  1. … 40 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Added `getLocationOnly()` to file system properties, to provide lazy access to just the location of the file system element, rather than both the location and the content of the file system element.

This can be used when mapping the location of a task output to produce an input to some other task, without implying a dependency on the producing task. For example, an IDE project file generation task may need to know where some output will end up (so need to know its location) but does not use the content of the output.

  1. … 9 more files in changeset.
Allow `RegularFileProperty` and `DirectoryProperty` types to be used on artifact transform parameter objects, and take care of fingerprinting and building the files before running the transform.

Reuse the mechanism that allows instances of generated classes to describe their state to the isolation infrastructure for other core Gradle types, such as `ConfigurableFileCollection`, `Provider` and `Property` and remove the custom isolation logic for these core types.

  1. … 36 more files in changeset.
Allow `RegularFileProperty` and `DirectoryProperty` types to be used on artifact transform parameter objects, and take care of fingerprinting and building the files before running the transform.

Reuse the mechanism that allows instances of generated classes to describe their state to the isolation infrastructure for other core Gradle types, such as `ConfigurableFileCollection`, `Provider` and `Property` and remove the custom isolation logic for these core types.

  1. … 36 more files in changeset.
Fix collection property implementations when `add()` or `put()` are called when the convention is being used.

  1. … 4 more files in changeset.
Add `convention()` method for all property types with overloads that accept either the convention value or a provider of the convention value.

  1. … 15 more files in changeset.
Change `ObjectFactory` to create collection and map properties whose initial value is an empty collection or map, and add a `convention()` method for collection properties. The "convention" for a property is the value to use when none has been explicitly specified for the property. This changes adds this for collection properties for now. It will be added for all lazy types later.

  1. … 27 more files in changeset.
Map property

Signed-off-by: Till Krullmann <till.krullmann@gmx.net>

    • -0
    • +703
    ./MapPropertySpec.groovy
  1. … 14 more files in changeset.
Prevent adding elements to the collection properties when no value

  1. … 1 more file in changeset.
Finalize the value of any task `@InputFile`, `@InputDirectory`, `@InputFiles`, `@OutputFile` and `@OutputDirectory` property whose getter returns a property instance, at the start of execution of the task.

This means that the property value will not change once the task has started execution, so that the same value is always used during fingerprinting, cache key calculation, validation, when queried by a task action, and so on.

  1. … 10 more files in changeset.
Finalize the value of any task `@Input` property whose getter returns a property instance, at the start of execution of the task.

This means that the property value will not change once the task has started execution, so that the same value is always used during fingerprinting, cache key calculation, validation, when queried by a task action, and so on.

This behaviour only applies to `@Input` properties in this commit. This was just a place to start. Other properties will be added in later commits.

Changes to the property are ignored once the value is finalized implicitly in this way and generate a deprecation warning instead of failing, as would happen after `finalizeValue()` is called. This allows a migration path for task types that can add a new property to represent some input and keep their existing lenient (but now deprecated) behaviour for an existing property backed by the new property. It might prove better to flip this around, let's see.

  1. … 60 more files in changeset.
Add `HasMultipleValue.finalizeValue()` method to allow the value of a collection property to be made final. Attempts to change the property value after this method is called will fail.

Use this in the native plugins and remove the internal `LockableCollectionProperty` implementation as it is no longer needed.

    • -118
    • +0
    ./LockableCollectionPropertySpec.groovy
  1. … 13 more files in changeset.
Add `Property.finalizeValue()` method to allow the value of a property to be made final. Attempts to change the property value after this method is called will fail.

Use this in the Swift plugins and remove the internal `LockableProperty` implementation as it is no longer needed.

    • -4
    • +4
    ./LockableCollectionPropertySpec.groovy
  1. … 20 more files in changeset.
Fix the collection property implementations so that they track the producer tasks of each of the elements of the collection.

This allows, for example, these types to be used to model buildable collections of files or directories or to represent task inputs.

  1. … 7 more files in changeset.
Remove the `ObjectFactory` factory method overloads that take an initial value, and add a `Property.value()` method that can be used to set the initial value instead by chaining the calls to the factory method and the `value()` method.

  1. … 16 more files in changeset.
Change `ObjectFactory` so that it creates list and set properties with no initial value, rather than with an empty collection as the initial value.

Added an `empty()` method as a convenience to use when constructing these kinds of properties.

    • -58
    • +128
    ./CollectionPropertySpec.groovy
    • -0
    • +15
    ./LockableCollectionPropertySpec.groovy
  1. … 27 more files in changeset.
Add `Provider.flatMap()` method, which creates a provider backed by a transform that returns a provider.

The implementation does not carry any details about the producer task.

  1. … 20 more files in changeset.
Rework task dependency inference so that `Provider` implementations use the same `TaskDependencyContainer` interface that most other things use to declare their producer task to the task resolution infrastructure, rather than having special knowledge sprinkled around various places.

Cleaned up a bunch of `Provider` and `Property` implementations so that more logic is reused rather than reimplemented.

  1. … 30 more files in changeset.
Move provider and property types from base-services up to model-core project. This better reflects their role and also later allows these types to reference other public types that are more specialized than those in base-services.

    • -0
    • +142
    ./AbstractProviderTest.groovy
    • -0
    • +462
    ./CollectionPropertySpec.groovy
    • -0
    • +56
    ./DefaultListPropertyTest.groovy
    • -0
    • +230
    ./DefaultPropertyStateTest.groovy
    • -0
    • +61
    ./DefaultProviderFactoryTest.groovy
    • -0
    • +100
    ./DefaultProviderTest.groovy
    • -0
    • +67
    ./DefaultSetPropertyTest.groovy
    • -0
    • +103
    ./LockableCollectionPropertySpec.groovy
    • -0
    • +59
    ./LockableListPropertyTest.groovy
    • -0
    • +217
    ./LockablePropertySpec.groovy
    • -0
    • +66
    ./LockablePropertyTest.groovy
    • -0
    • +59
    ./LockableSetPropertyTest.groovy
    • -0
    • +326
    ./PropertySpec.groovy
    • -0
    • +59
    ./ProviderSpec.groovy
    • -0
    • +154
    ./ProvidersTest.groovy
  1. … 87 more files in changeset.