diff options
Diffstat (limited to 'build-logic/src/main/kotlin/DownloadZipFile.kt')
| -rw-r--r-- | build-logic/src/main/kotlin/DownloadZipFile.kt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/build-logic/src/main/kotlin/DownloadZipFile.kt b/build-logic/src/main/kotlin/DownloadZipFile.kt new file mode 100644 index 0000000..475f195 --- /dev/null +++ b/build-logic/src/main/kotlin/DownloadZipFile.kt @@ -0,0 +1,35 @@ +import org.gradle.api.provider.Property +import java.io.InputStream +import java.net.URI +import java.util.zip.ZipInputStream + +abstract class DownloadZipFile : DownloadArchiveFile<ZipInputStream>() { + abstract class GitLabSource { + abstract val domain: Property<String> + abstract val owner: Property<String> + abstract val project: Property<String> + abstract val hash: Property<String> + + fun toUrl(): URI { + return URI.create("https://${domain.get()}/${owner.get()}/${project.get()}/-/archive/${hash.get()}/${project.get()}-${hash.get()}.zip") + } + + } + + fun gitlab(configure: GitLabSource.() -> Unit) { + stripRoot.convention(true) + url.set( + project.provider( + project.objects.newInstance(GitLabSource::class.java).also(configure)::toUrl + ) + ) + } + + override fun mapInputStream(inputStream: InputStream): ZipInputStream { + return ZipInputStream(inputStream) + } + + override fun nextEntry(stream: ZipInputStream): String? { + return stream.nextEntry?.name + } +}
\ No newline at end of file |
