# OutOperationRequest

# OutOperationRequest

<br />

```
interface OutOperationRequest<FileTypeT : FileSystemLocation>
```

<br />

*** ** * ** ***

Operations performed by a[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)with a single[RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html)or[Directory](https://docs.gradle.org/current/javadoc/org/gradle/api/file/Directory.html)output.

[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)is not consuming existing version of the target[SingleArtifact](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/SingleArtifact).

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                             ### Public functions                                                                                                                                                                                                                                                                                                                                                                                              ||
|------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `<ArtifactTypeT : `[Artifact.Multiple](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Multiple)`<FileTypeT> & `[Artifact.Appendable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Appendable)`> `[toAppendTo](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/OutOperationRequest#toAppendTo(com.android.build.api.artifact.Artifact.Multiple))`(` ` type: ArtifactTypeT` `)` Initiates an append request to a[Artifact.Multiple](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Multiple)artifact type.        |
| [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `<ArtifactTypeT : `[Artifact.Single](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Single)`<FileTypeT> & `[Artifact.Replaceable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Replaceable)`> `[toCreate](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/OutOperationRequest#toCreate(com.android.build.api.artifact.Artifact.Single))`(` ` type: ArtifactTypeT` `)` Initiates a creation request for a single[Artifact.Replaceable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Replaceable)artifact type. |

## Public functions

### toAppendTo

```
fun <ArtifactTypeT : Artifact.Multiple<FileTypeT> & Artifact.Appendable> toAppendTo(
    type: ArtifactTypeT
): Unit
```

Initiates an append request to a[Artifact.Multiple](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Multiple)artifact type.  

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ||
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `type: ArtifactTypeT` | The[Artifact](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact)of[FileTypeT](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/OutOperationRequest)identifying the artifact to append to. The artifact type must be[Artifact.Multiple](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Multiple)and[Artifact.Appendable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Appendable). As an example, let's take a[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)that outputs a[org.gradle.api.file.RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html): ```scalate-server-page abstract class MyTask: DefaultTask() { @get:OutputFile abstract val outputFile: RegularFileProperty @TaskAction fun taskAction() { ... outputFile.get().asFile.write( ... ) ... } } ``` and an ArtifactType defined as follows : ```scalate-server-page sealed class ArtifactType<T: FileSystemLocation>( val kind: ArtifactKind ): MultipleArtifactType { object MULTIPLE_FILE_ARTIFACT: ArtifactType<RegularFile>(FILE), Appendable } ``` You can then register the above task as a Provider of[org.gradle.api.file.RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html)for that artifact type: ```verilog val taskProvider= projects.tasks.register(MyTask::class.java, "appendTask") artifacts.use(taskProvider) .wiredWith(MyTask::outputFile) .toAppendTo(ArtifactType.MULTIPLE_FILE_ARTIFACT) ``` |

### toCreate

```
fun <ArtifactTypeT : Artifact.Single<FileTypeT> & Artifact.Replaceable> toCreate(
    type: ArtifactTypeT
): Unit
```

Initiates a creation request for a single[Artifact.Replaceable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Replaceable)artifact type.  

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ||
|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `type: ArtifactTypeT` | The[Artifact](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact)of[FileTypeT](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/OutOperationRequest)identifying the artifact to replace. The artifact type must be[Artifact.Replaceable](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Replaceable) A creation request does not care about the existing producer, since it replaces the existing producer. Therefore the existing producer task will not execute (unless it produces other outputs). Please note that when such replace requests are made, the[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)will replace initial AGP providers. You cannot replace the[Artifact.Multiple](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/Artifact.Multiple)artifact type; therefore, you must instead combine it using the[TaskBasedOperation.wiredWith](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1))API. For example, let's take a[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)that outputs a[org.gradle.api.file.RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html): ```scalate-server-page abstract class MyTask: DefaultTask() { @get:OutputFile abstract val outputFile: RegularFileProperty @TaskAction fun taskAction() { ... write outputFile ... } } ``` An[SingleArtifact](https://developer.android.com/reference/tools/gradle-api/8.1/com/android/build/api/artifact/SingleArtifact)is defined as follows: ```scalate-server-page sealed class ArtifactType<T: FileSystemLocation>(val kind: ArtifactKind) { object SINGLE_FILE_ARTIFACT: ArtifactType<RegularFile>(FILE), Replaceable } ``` You can register a transform to the collection of[org.gradle.api.file.RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html): ```verilog val taskProvider= projects.tasks.register(MyTask::class.java, "replaceTask") artifacts.use(taskProvider) .wiredWith(MyTask::outputFile) .toCreate(ArtifactType.SINGLE_FILE_ARTIFACT) ``` |