summaryrefslogtreecommitdiff
path: root/build-logic/src/main/kotlin/DownloadZipFile.kt
diff options
context:
space:
mode:
Diffstat (limited to 'build-logic/src/main/kotlin/DownloadZipFile.kt')
-rw-r--r--build-logic/src/main/kotlin/DownloadZipFile.kt35
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