# InAndOutFileOperationRequest

# InAndOutFileOperationRequest

```
interface InAndOutFileOperationRequest
```

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [com.android.build.api.artifact.InAndOutFileOperationRequest](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/InAndOutFileOperationRequest#) |

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 consuming existing version of the target[SingleArtifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/SingleArtifact)and producing a new version.

## Summary

|                                                                                                                                                                                                                                                                       ### Public methods                                                                                                                                                                                                                                                                        ||
|--------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [toTransform](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/InAndOutFileOperationRequest#toTransform(com.android.build.api.artifact.InAndOutFileOperationRequest.toTransform.ArtifactTypeT))`(`type:` `ArtifactTypeT`)` Initiates a transform request to a single[Artifact.Transformable](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.Transformable)artifact type. |

## Public methods

### toTransform

```
abstract fun <ArtifactTypeT> toTransform(type: ArtifactTypeT): Unit where ArtifactTypeT : Artifact.Single<RegularFile>, ArtifactTypeT : Artifact.Transformable
```

Initiates a transform request to a single[Artifact.Transformable](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.Transformable)artifact type.

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ||
|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| type:ArtifactTypeT | The[Artifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact)identifying the artifact to transform. The[Artifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact)'s[Artifact.kind](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact#kind:com.android.build.api.artifact.ArtifactKind)must be[Artifact.FILE](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact#Companion.FILE:com.android.build.api.artifact.ArtifactKind.FILE). The artifact type must be[Artifact.Single](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.Single)and[Artifact.Transformable](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.Transformable). As an example, let's take a[Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)transforming an input[org.gradle.api.file.RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html)into an output: ```scalate-server-page abstract class MyTask: DefaultTask() { @get:InputFile abstract val inputFile: RegularFileProperty @get:OutputFile abstract val outputFile: RegularFileProperty @TaskAction fun taskAction() { ... read inputFile and write outputFile ... } } ``` An ArtifactType defined as follows : ```scalate-server-page sealed class ArtifactType<T: FileSystemLocation>(val kind: ArtifactKind) { object SINGLE_FILE_ARTIFACT: ArtifactType<RegularFile>(FILE), Single, Transformable } ``` 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, "transformTask") artifacts.use(taskProvider) .wiredWithFiles( MyTask::inputFile, MyTask::outputFile) .toTransform(ArtifactType.SINGLE_FILE_ARTIFACT) ``` |