mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[fleet] [FL-33222] Move buildtool libraries to JPS model for re-use in Bazel rules / Haven CLI
GitOrigin-RevId: 908e04e94f1bb3f5c65c3509099c0708511c7adc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b1d6fa74be
commit
76db31854e
+213
@@ -0,0 +1,213 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:aws.sdk.kotlin.s3.jvm" type="repository">
|
||||
<properties maven-id="aws.sdk.kotlin:s3-jvm:1.0.69">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69.jar">
|
||||
<sha256sum>3d6cd0bf48c65e965903fa4720d713badeeaa5433bd7b278075c484e3a5709a8</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69.jar">
|
||||
<sha256sum>877ffeaa6fc96192da7383b3c3e16717cb52504f488b80937d796eb875e5565a</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16.jar">
|
||||
<sha256sum>2f12ed8fbd53e91cb3b2a163b5d06ae2c39f538bd74f23a678889f5be02e8675</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16.jar">
|
||||
<sha256sum>198b9b1ec6c33da8c460e6a2e0859d1308f1fcb3f7d4138100f7dd75207edd80</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16.jar">
|
||||
<sha256sum>633ccbae483c99b27e311a6a70157cfc0dfa19f8eb3ba263198f40f87266c09c</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69.jar">
|
||||
<sha256sum>e738ebef7be523c4e1940f5e5b2390ba853d4333f547038b2b31fb3964e99933</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69.jar">
|
||||
<sha256sum>d3f30ef5e3b11b358f28f42422226585b72e4a11bf13b1fc3411962dcfde64f3</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16.jar">
|
||||
<sha256sum>aa584dcd05862a8bbe7eb7db73959d93ca6b527cc44536b7d10fcda733411d4b</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16.jar">
|
||||
<sha256sum>8a2323e7d08ff07d2f869e4bcae834773ce0a0e8704cd7404c9625992a748662</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar">
|
||||
<sha256sum>67543f0736fc422ae927ed0e504b98bc5e269fda0d3500579337cb713da28412</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16.jar">
|
||||
<sha256sum>ce382d40f998d8dd11008967c3bf4cd51c47182512b84b5f1d48e48d2a3f9770</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16.jar">
|
||||
<sha256sum>508bde368d4b174402aeeccec68c7e29ad9349a953b1efab75ebeaa6c0a21f0e</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16.jar">
|
||||
<sha256sum>01489854c4f9494de6cd5446df8e3c694ad3f6582c5369b9578eb18754f1720c</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16.jar">
|
||||
<sha256sum>71fe60ba15b5f9c43f5ee1da0edc13fd98f2a85dbf8c9dcafc666bc1c7e668e7</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69.jar">
|
||||
<sha256sum>6b7584f233e0715f5394edfbfd5536a480113efe99f3d49bfd58d2395072177a</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16.jar">
|
||||
<sha256sum>6d7028c6e695b872e0ba91679af4dbbabf8e1bfbd6f7fb52be30bb1e398d595d</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16.jar">
|
||||
<sha256sum>30cf05f9f7ec7d6676031ee2b0c8f4b33b107a93a179ca931d57baa983de70a3</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16.jar">
|
||||
<sha256sum>dd0616302ce4a3fc1c03326bad37e5cf3509377692b6aca5ea17d581ad582d62</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16.jar">
|
||||
<sha256sum>94cc5ebcb2d819ebb8c628f64ffa352426f23b3b422834bfa8199cf497a1365d</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16.jar">
|
||||
<sha256sum>3f0d5d4e67a3097b56b32fa7b26589da9d6bd0968693b395ad1c8f49f60dbdfd</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16.jar">
|
||||
<sha256sum>79ed729b7e134609310de7d691b1b80870f467a95bc84f2f6bbf3e43ae83de85</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16.jar">
|
||||
<sha256sum>9664c8d36468c1f575b356f04025ce17417e584a0bb19b640b115b10a8dce72c</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16.jar">
|
||||
<sha256sum>31e3811fd85ba7fcba38a4067d63af8c13c1e05ae7062639fd8c954520315f51</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16.jar">
|
||||
<sha256sum>bbbf92cbc8df78a8fa20f0b35613e8d41024ee6525b538ebda280917e1d7e812</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16.jar">
|
||||
<sha256sum>4bfb91b4c6373ac2b1d94a085c69935ca1b56b7b27b21c5228c5bc5da6f7e2dc</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11.jar">
|
||||
<sha256sum>506a1d3aba9f99b55570c7f8813cd79a44946531f29050d5b938474efdb4cf80</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11.jar">
|
||||
<sha256sum>1452873e0cc9637b7e1a717f2cca0cbccebd00c05aaaf67b8adb06777bf4f461</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16.jar">
|
||||
<sha256sum>be3f9bd5ebfb83aa353f407a4389f7b3454a6945f82cea1d41e370aeedae71cd</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16.jar">
|
||||
<sha256sum>c017ee899656cf5abf22c3793603cb33ae35f0a805b9fa0707f8146a73a14a7f</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16.jar">
|
||||
<sha256sum>72c8559a241af92ce122c0df0dc3749d638d616ebd5da3ba3749a95abca3b349</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16.jar">
|
||||
<sha256sum>4343154bb1b0a282d86b627932a465722eeda3cccd6cc4986fc5e5c4013bfef4</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16.jar">
|
||||
<sha256sum>66c0700ca0c27046b0b12e6cf4c4da423800b88c1c72b2709cd5cbc3e0f1eb64</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
<exclude>
|
||||
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib" />
|
||||
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm" />
|
||||
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8" />
|
||||
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib-common" />
|
||||
<dependency maven-id="org.slf4j:slf4j-api" />
|
||||
</exclude>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
Generated
+45
@@ -0,0 +1,45 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:clikt" type="repository">
|
||||
<properties maven-id="com.github.ajalt.clikt:clikt-jvm:5.0.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3.jar">
|
||||
<sha256sum>9cd19e04782f461dffeb183d17e576984febb7934932cb406646ac41e428863b</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1.jar">
|
||||
<sha256sum>9ed3b976fcccc78da746d49866fa8ebb8f10530a93c544ea0420259a607dd95e</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1.jar">
|
||||
<sha256sum>9cf9b46d1f49f2d6cf2635462b29dc59e0c29b1fb2f085b3312888bbe9c7cd31</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0.jar">
|
||||
<sha256sum>59f741adfe62053066782d8b1a45afd06685a4bc64b33277e54876b993ed885c</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
<exclude>
|
||||
<dependency maven-id="com.github.ajalt.clikt:clikt-core-jvm" />
|
||||
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib" />
|
||||
<dependency maven-id="com.github.ajalt.mordant:mordant-jvm-jna-jvm" />
|
||||
<dependency maven-id="com.github.ajalt.mordant:mordant-jvm-ffm-jvm" />
|
||||
<dependency maven-id="com.github.ajalt.mordant:mordant-jvm-graal-ffi-jvm" />
|
||||
</exclude>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
Generated
+18
@@ -0,0 +1,18 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:clikt-core" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="com.github.ajalt.clikt:clikt-core-jvm:5.0.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-core-jvm/5.0.3/clikt-core-jvm-5.0.3.jar">
|
||||
<sha256sum>69cba94a2291f74b78c88239cd8b67eaf3f08e0dad297749abe6477b3e9b81b1</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-core-jvm/5.0.3/clikt-core-jvm-5.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-core-jvm/5.0.3/clikt-core-jvm-5.0.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:github.luben.zstd.jni" type="repository">
|
||||
<properties maven-id="com.github.luben:zstd-jni:1.5.5-11">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar">
|
||||
<sha256sum>d75b2ced6059f81ad23e021c554259b906b6c4f2991cb772409827569ead4c1a</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:io.github.pdvrieze.xmlutil.core.jvm" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="io.github.pdvrieze.xmlutil:core-jvm:0.86.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar">
|
||||
<sha256sum>91527d86fea04bd6183d140a09f10dab2dea727af12d27d9165ee342ea3d0ede</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:io.github.pdvrieze.xmlutil.serialization.jvm" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="io.github.pdvrieze.xmlutil:serialization-jvm:0.86.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar">
|
||||
<sha256sum>9ce273dcb860b92a5bf2ec36ad1e2a11b41aed89c6c984ca73e87eff5eda1bd0</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:io.ktor.client.logging" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="io.ktor:ktor-client-logging-jvm:3.1.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3.jar">
|
||||
<sha256sum>ecabf013b137f1a69c39cffeae1ba9e365659357b21688f1876ee6cf50fd00b9</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:io.ktor.client.mock" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="io.ktor:ktor-client-mock-jvm:3.1.3">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3.jar">
|
||||
<sha256sum>2ae0d57bb9fceb8ee2aeda6536acc6f3e1de355984b4c9da720566b85f1525e8</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,45 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:jetbrains.intellij.idea.community.build.zip" type="repository">
|
||||
<properties maven-id="com.jetbrains.intellij.idea:idea-community-build-zip:252.11244">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/jetbrains/intellij/idea/idea-community-build-zip/252.11244/idea-community-build-zip-252.11244.jar">
|
||||
<sha256sum>c86d2bfa23d5d23f916d3574591a166b3df259bea6c23d39abea597b34ba022f</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2.jar">
|
||||
<sha256sum>74d953cec00048b892112f9602fc7b1113ea55337dc1ede32e449efcb2b231c7</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2.jar">
|
||||
<sha256sum>cc65afe17daf2f9380d3c64460f5b10ec279f98b9461fbf0ccf62b3cb3ee6c37</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8.5.15-jb1/intellij-deps-fastutil-8.5.15-jb1.jar">
|
||||
<sha256sum>5a0d7557d494732a6165e4188eb11f10faca196350cad04d9950abd83e6dd148</sha256sum>
|
||||
</artifact>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0.jar">
|
||||
<sha256sum>0181873ba85684d119134f5598432f5b63109a03adc455767a1500b2145df8a2</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
<exclude>
|
||||
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib" />
|
||||
</exclude>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/jetbrains/intellij/idea/idea-community-build-zip/252.11244/idea-community-build-zip-252.11244.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8.5.15-jb1/intellij-deps-fastutil-8.5.15-jb1.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/jetbrains/intellij/idea/idea-community-build-zip/252.11244/idea-community-build-zip-252.11244-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8.5.15-jb1/intellij-deps-fastutil-8.5.15-jb1-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -0,0 +1,18 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:jetbrains.intellij.platform.util.zip.squashed" type="repository">
|
||||
<properties include-transitive-deps="false" maven-id="com.jetbrains.intellij.platform:util-zip-squashed:252.16432">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/com/jetbrains/intellij/platform/util-zip-squashed/252.16432/util-zip-squashed-252.16432.jar">
|
||||
<sha256sum>7df07e447c1de46592dfe4b20345b61ff57c5f3b796b8e946086559b260f7690</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/jetbrains/intellij/platform/util-zip-squashed/252.16432/util-zip-squashed-252.16432.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/jetbrains/intellij/platform/util-zip-squashed/252.16432/util-zip-squashed-252.16432-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
Generated
+20
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="fleet:tukaani.xz" type="repository">
|
||||
<properties maven-id="org.tukaani:xz:1.9">
|
||||
<verification>
|
||||
<artifact url="file://$MAVEN_REPOSITORY$/org/tukaani/xz/1.9/xz-1.9.jar">
|
||||
<sha256sum>211b306cfc44f8f96df3a0a3ddaf75ba8c5289eed77d60d72f889bb855f535e5</sha256sum>
|
||||
</artifact>
|
||||
</verification>
|
||||
</properties>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.9/xz-1.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.9/xz-1.9-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.9/xz-1.9-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
Generated
+9
@@ -4,6 +4,15 @@
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/andel/fleet.andel.iml" filepath="$PROJECT_DIR$/fleet/andel/fleet.andel.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/bifurcan/fleet.bifurcan.iml" filepath="$PROJECT_DIR$/fleet/bifurcan/fleet.bifurcan.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/authentication/fleet.build.authentication.iml" filepath="$PROJECT_DIR$/fleet/build/authentication/fleet.build.authentication.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/cli/fleet.build.cli.iml" filepath="$PROJECT_DIR$/fleet/build/cli/fleet.build.cli.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/codecache/fleet.build.codecache.iml" filepath="$PROJECT_DIR$/fleet/build/codecache/fleet.build.codecache.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/fs/fleet.build.fs.iml" filepath="$PROJECT_DIR$/fleet/build/fs/fleet.build.fs.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/http/fleet.build.http.iml" filepath="$PROJECT_DIR$/fleet/build/http/fleet.build.http.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/license/fleet.build.license.iml" filepath="$PROJECT_DIR$/fleet/build/license/fleet.build.license.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/platform/fleet.build.platform.iml" filepath="$PROJECT_DIR$/fleet/build/platform/fleet.build.platform.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/s3/fleet.build.s3.iml" filepath="$PROJECT_DIR$/fleet/build/s3/fleet.build.s3.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/build/sign/fleet.build.sign.iml" filepath="$PROJECT_DIR$/fleet/build/sign/fleet.build.sign.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/bundles/fleet.bundles.iml" filepath="$PROJECT_DIR$/fleet/bundles/fleet.bundles.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/codecache/fleet.codecache.iml" filepath="$PROJECT_DIR$/fleet/codecache/fleet.codecache.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/fleet/codecache/test/fleet.codecache.test.iml" filepath="$PROJECT_DIR$/fleet/codecache/test/fleet.codecache.test.iml" />
|
||||
|
||||
@@ -221,6 +221,15 @@ commandInterface
|
||||
community-resources
|
||||
fleet/andel
|
||||
fleet/bifurcan
|
||||
fleet/build/authentication
|
||||
fleet/build/cli
|
||||
fleet/build/codecache
|
||||
fleet/build/fs
|
||||
fleet/build/http
|
||||
fleet/build/license
|
||||
fleet/build/platform
|
||||
fleet/build/s3
|
||||
fleet/build/sign
|
||||
fleet/bundles
|
||||
fleet/codecache
|
||||
fleet/codecache/test
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
/**/build
|
||||
/**/gradlebuild/build
|
||||
@@ -0,0 +1,31 @@
|
||||
### auto-generated section `build fleet.build.authentication` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_authentication",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "authentication",
|
||||
module_name = "fleet.build.authentication",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_authentication",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-serialization-core",
|
||||
"@lib//:kotlinx-serialization-json",
|
||||
"@lib//:slf4j-api",
|
||||
"@lib//:fleet-io-github-pdvrieze-xmlutil-serialization-jvm",
|
||||
"@lib//:fleet-io-github-pdvrieze-xmlutil-core-jvm",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.authentication` end
|
||||
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
<arrayArguments>
|
||||
<arrayArg name="pluginClasspaths">
|
||||
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
|
||||
</arrayArg>
|
||||
<arrayArg name="pluginOptions" />
|
||||
</arrayArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
<orderEntry type="library" name="slf4j-api" level="project" />
|
||||
<orderEntry type="library" name="fleet:io.github.pdvrieze.xmlutil.serialization.jvm" level="project" />
|
||||
<orderEntry type="library" name="fleet:io.github.pdvrieze.xmlutil.core.jvm" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,71 @@
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
alias(jps.plugins.kotlin.serialization)
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.authentication"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.core.jvm1739247612.get().let { "${it.group}:kotlinx-serialization-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.json.jvm231489733.get().let { "${it.group}:kotlinx-serialization-json:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.slf4j.slf4j.api2013636515.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
exclude(group = "org.slf4j", module = "slf4j-jdk14")
|
||||
}
|
||||
}
|
||||
sourceSets.jvmMain.dependencies {
|
||||
implementation(jps.io.github.pdvrieze.xmlutil.serialization.jvm796850685.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.io.github.pdvrieze.xmlutil.core.jvm535986330.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package fleet.buildtool.authentication
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import nl.adaptivity.xmlutil.ExperimentalXmlUtilApi
|
||||
import nl.adaptivity.xmlutil.serialization.XML
|
||||
import nl.adaptivity.xmlutil.serialization.XmlConfig
|
||||
import nl.adaptivity.xmlutil.serialization.XmlElement
|
||||
import nl.adaptivity.xmlutil.serialization.XmlSerialName
|
||||
import org.slf4j.Logger
|
||||
import java.nio.file.Path
|
||||
import kotlin.io.path.exists
|
||||
import kotlin.io.path.readText
|
||||
|
||||
const val intellijPrivateDependenciesId = "intellij-private-dependencies"
|
||||
|
||||
val defaultSettingsPath by lazy {
|
||||
Path.of(System.getProperty("user.home")).resolve(".m2/settings.xml")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalXmlUtilApi::class)
|
||||
fun readMavenSettingsServerCredentials(
|
||||
logger: Logger,
|
||||
mavenSettingsPath: Path = defaultSettingsPath,
|
||||
): List<MavenServerCredentials> {
|
||||
logger.info("Reading servers credentials from Maven settings '$mavenSettingsPath'")
|
||||
val xml = XML {
|
||||
defaultPolicy {
|
||||
unknownChildHandler = XmlConfig.IGNORING_UNKNOWN_CHILD_HANDLER
|
||||
}
|
||||
}
|
||||
if (!mavenSettingsPath.exists()) {
|
||||
logger.warn("WARNING: failed to find '$mavenSettingsPath', no repository credentials will be read")
|
||||
return emptyList()
|
||||
}
|
||||
return try {
|
||||
xml.decodeFromString(MavenSettings.serializer(), mavenSettingsPath.readText()).servers?.servers ?: emptyList()
|
||||
}
|
||||
catch (e: Exception) {
|
||||
logger.warn("WARNING: failed to parse {}", mavenSettingsPath, e)
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName(
|
||||
value = "settings",
|
||||
namespace = "http://maven.apache.org/SETTINGS/1.0.0",
|
||||
)
|
||||
private data class MavenSettings(@XmlElement val servers: MavenServers?)
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("servers")
|
||||
data class MavenServers(@XmlElement val servers: List<MavenServerCredentials>?)
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("server")
|
||||
data class MavenServerCredentials(
|
||||
@XmlElement @XmlSerialName("id") val id: String?,
|
||||
@XmlElement @XmlSerialName("username") val username: String?,
|
||||
@XmlElement @XmlSerialName("password") val password: String?,
|
||||
)
|
||||
@@ -0,0 +1,44 @@
|
||||
load("@rules_java//java:defs.bzl", "java_binary")
|
||||
|
||||
|
||||
java_binary(
|
||||
name = "haven",
|
||||
main_class = "fleet.buildtool.cli.MainKt",
|
||||
visibility = ["//visibility:public"],
|
||||
runtime_deps = [":cli"],
|
||||
)
|
||||
|
||||
### auto-generated section `build fleet.build.cli` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_cli",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "cli",
|
||||
module_name = "fleet.build.cli",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_cli",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-io-core",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"@lib//:fleet-clikt-core",
|
||||
"@lib//:fleet-clikt",
|
||||
],
|
||||
exports = [
|
||||
"@lib//:fleet-clikt-core",
|
||||
"@lib//:fleet-clikt",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.cli` end
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-io-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
|
||||
<orderEntry type="library" exported="" name="fleet:clikt-core" level="project" />
|
||||
<orderEntry type="library" exported="" name="fleet:clikt" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,86 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.buildtool.cli"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvm {
|
||||
@OptIn(ExperimentalKotlinGradlePluginApi::class)
|
||||
binaries {
|
||||
// Configures a JavaExec task named "runJvm" and a Gradle distribution for the "main" compilation in this target
|
||||
executable {
|
||||
mainClass.set("fleet.buildtool.cli.commands.GenerateInitModuleDescriptorCommandKt")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.io.core.jvm479158162.get().let { "${it.group}:kotlinx-io-core:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
}
|
||||
implementation(jps.com.intellij.platform.kotlinx.coroutines.core.jvm134738847.get().let { "${it.group}:kotlinx-coroutines-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
api(jps.com.github.ajalt.clikt.clikt.core.jvm23167398.get().let { "${it.group}:clikt-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
api(jps.com.github.ajalt.clikt.clikt.jvm1164206222.get().let { "${it.group}:clikt:${it.version}" }) {
|
||||
exclude(group = "com.github.ajalt.clikt", module = "clikt-core-jvm")
|
||||
exclude(group = "com.github.ajalt.clikt", module = "clikt-core")
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-jna-jvm")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-jna")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-ffm-jvm")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-ffm")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-graal-ffi-jvm")
|
||||
exclude(group = "com.github.ajalt.mordant", module = "mordant-jvm-graal-ffi")
|
||||
}
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package fleet.buildtool.cli
|
||||
|
||||
import com.github.ajalt.clikt.core.CliktCommand
|
||||
import com.github.ajalt.clikt.core.main
|
||||
import com.github.ajalt.clikt.core.subcommands
|
||||
import kotlin.io.path.Path
|
||||
import kotlin.io.path.readLines
|
||||
|
||||
class Haven : CliktCommand(name = "haven") {
|
||||
override fun run(): Unit = Unit
|
||||
}
|
||||
|
||||
fun main(args: Array<String>): Unit = Haven().subcommands(
|
||||
// TODO: add commands here
|
||||
).main(parseArgs(args))
|
||||
|
||||
private fun parseArgs(startupArgs: Array<String>): List<String> {
|
||||
return when (startupArgs.size) {
|
||||
1 -> Path(startupArgs[0].removePrefixStrict("--flagfile=")).readLines()
|
||||
else -> startupArgs.toList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.removePrefixStrict(prefix: String): String {
|
||||
val result = removePrefix(prefix)
|
||||
check(result != this) {
|
||||
"String must start with $prefix but was: $this"
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
### auto-generated section `build fleet.build.codecache` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_codecache",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "codecache",
|
||||
module_name = "fleet.build.codecache",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_codecache",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"//fleet/bundles",
|
||||
"//fleet/codecache",
|
||||
"//fleet/build/platform",
|
||||
"//fleet/build/fs",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"@lib//:slf4j-api",
|
||||
"@lib//:fleet-jetbrains-intellij-platform-util-zip-squashed",
|
||||
"@lib//:fleet-jetbrains-intellij-idea-community-build-zip",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.codecache` end
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="module" module-name="fleet.bundles" />
|
||||
<orderEntry type="module" module-name="fleet.codecache" />
|
||||
<orderEntry type="module" module-name="fleet.build.platform" />
|
||||
<orderEntry type="module" module-name="fleet.build.fs" />
|
||||
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
|
||||
<orderEntry type="library" name="slf4j-api" level="project" />
|
||||
<orderEntry type="library" name="fleet:jetbrains.intellij.platform.util.zip.squashed" level="project" />
|
||||
<orderEntry type="library" name="fleet:jetbrains.intellij.idea.community.build.zip" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,69 @@
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.codecache"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.com.intellij.platform.kotlinx.coroutines.core.jvm134738847.get().let { "${it.group}:kotlinx-coroutines-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.slf4j.slf4j.api2013636515.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
exclude(group = "org.slf4j", module = "slf4j-jdk14")
|
||||
}
|
||||
implementation(jps.com.jetbrains.intellij.platform.util.zip.squashed55996306.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.com.jetbrains.intellij.idea.idea.community.build.zip464377771.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
}
|
||||
implementation(project(":fleet.bundles"))
|
||||
implementation(project(":fleet.codecache"))
|
||||
implementation(project(":fleet.build.platform"))
|
||||
implementation(project(":fleet.build.fs"))
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package fleet.buildtool.codecache
|
||||
|
||||
import java.lang.module.ModuleDescriptor
|
||||
import java.lang.module.ModuleFinder
|
||||
import java.nio.file.Path
|
||||
|
||||
data class HashedJar(
|
||||
val hash: String,
|
||||
val file: Path,
|
||||
val moduleDescriptor: String?,
|
||||
) {
|
||||
companion object {
|
||||
fun fromFile(hash: String, file: Path, jdkVersionFeature: Int): HashedJar = HashedJar(
|
||||
hash = hash,
|
||||
file = file,
|
||||
moduleDescriptor = findModuleDescriptorOrNull(file)?.serialize(jdkVersionFeature),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun findModuleDescriptorOrNull(jarFile: Path): ModuleDescriptor? {
|
||||
val allModules = ModuleFinder.of(jarFile).findAll()
|
||||
return when {
|
||||
allModules.isEmpty() -> null
|
||||
allModules.size > 1 -> error("One jar file should have only one module: $jarFile")
|
||||
else -> allModules.single().descriptor()
|
||||
}
|
||||
}
|
||||
|
||||
fun findModuleDescriptor(jarFile: Path): ModuleDescriptor = findModuleDescriptorOrNull(jarFile)
|
||||
?: error("a module descriptor must be able to be derived from '$jarFile'")
|
||||
+370
@@ -0,0 +1,370 @@
|
||||
package fleet.buildtool.codecache
|
||||
|
||||
import java.lang.module.ModuleDescriptor
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.DataOutputStream
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* Serialises this module descriptor into the class file format.
|
||||
*
|
||||
* Class file version will be inferred from the [jdkVersionFeature] parameter.
|
||||
*
|
||||
* If the module is "automatic" it will be converted into an "open" module.
|
||||
*
|
||||
* See: https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html
|
||||
*/
|
||||
fun ModuleDescriptor.serialize(jdkVersionFeature: Int): String = let { descriptor ->
|
||||
// As defined by https://www.oracle.com/java/technologies/javase/10-relnote-issues.html#Remaining
|
||||
val CLASS_FILE_VERSION_MAJOR = 44 + jdkVersionFeature
|
||||
val CLASS_FILE_VERSION_MINOR = 0
|
||||
|
||||
assert(CLASS_FILE_VERSION_MAJOR >= 53) {
|
||||
"Modules are not supported by this class file version ($CLASS_FILE_VERSION_MAJOR.$CLASS_FILE_VERSION_MINOR)"
|
||||
}
|
||||
|
||||
return byteArrayBuilder { dos ->
|
||||
dos.writeInt(CLASS_FILE_MAGIC)
|
||||
|
||||
dos.writeShort(CLASS_FILE_VERSION_MINOR)
|
||||
dos.writeShort(CLASS_FILE_VERSION_MAJOR)
|
||||
|
||||
// Constant pool is filled in by its users (e.g. writeModule).
|
||||
val pool = ConstantPool()
|
||||
val module = byteArrayBuilder { it.writeModule(descriptor.automaticToOpen(), pool) }
|
||||
|
||||
// Write constant pool.
|
||||
dos.writeShort(pool.count)
|
||||
for ((constant, _) in pool.constants.toList().sortedBy { it.second }) {
|
||||
dos.writeConstant(constant)
|
||||
}
|
||||
|
||||
// Write serialised module.
|
||||
dos.write(module)
|
||||
}.let {
|
||||
Base64.getEncoder().encodeToString(it)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an automatic module to an open module.
|
||||
*
|
||||
* Automatic modules are not serializable as by definition they are not represented by a `module-info.class`. We need them to be serialized
|
||||
* for loading optimization at runtime.
|
||||
*
|
||||
* This function must be aligned with its runtime equivalent [fleet.util.modules.convertOpenToAutomatic]
|
||||
*/
|
||||
private fun ModuleDescriptor.automaticToOpen(): ModuleDescriptor {
|
||||
val moduleDescriptor = this
|
||||
if (!moduleDescriptor.isAutomatic) return moduleDescriptor
|
||||
return ModuleDescriptor.newOpenModule(moduleDescriptor.name()).apply {
|
||||
if (moduleDescriptor.version().isPresent) {
|
||||
version(moduleDescriptor.version().get())
|
||||
}
|
||||
moduleDescriptor.requires().forEach {
|
||||
requires(it)
|
||||
}
|
||||
moduleDescriptor.provides().forEach {
|
||||
provides(it)
|
||||
}
|
||||
packages(moduleDescriptor.packages())
|
||||
}.build()
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialises the part of the class file that pertains to a particular module (its flags, attributes, main class, etc.)
|
||||
*/
|
||||
private fun DataOutputStream.writeModule(descriptor: ModuleDescriptor, pool: ConstantPool) {
|
||||
// Access flags. ACC_MODULE means that this class file is a module.
|
||||
writeShort(ACC_MODULE)
|
||||
// this_class item must be "module-info" class in a module class file.
|
||||
writeShort(pool.getOrCreateClass("module-info"))
|
||||
|
||||
// super_class item must be 0 in module class files.
|
||||
writeShort(0)
|
||||
// interfaces_count item must be 0 in module class files.
|
||||
writeShort(0)
|
||||
// fields_count item must be 0 in module class files.
|
||||
writeShort(0)
|
||||
// methods_count item must be 0 in module class files.
|
||||
writeShort(0)
|
||||
|
||||
|
||||
// We will write Module attribute, SourceFile attribute and, optionally, ModulePackages and ModuleMainClass
|
||||
// attributes if they are present.
|
||||
//
|
||||
// This means the attributes count will be in the range 2 to 4.
|
||||
val attributesCount = when {
|
||||
descriptor.mainClass().isPresent && descriptor.packages().isNotEmpty() -> 4
|
||||
descriptor.mainClass().isPresent || descriptor.packages().isNotEmpty() -> 3
|
||||
else -> 2
|
||||
}
|
||||
|
||||
writeShort(attributesCount)
|
||||
|
||||
// Write SourceFile attribute.
|
||||
writeAttribute("SourceFile", pool) {
|
||||
it.writeSourceFileAttributeInfo("module-info.java", pool)
|
||||
}
|
||||
|
||||
// Write Module attribute.
|
||||
writeAttribute("Module", pool) {
|
||||
it.writeModuleAttributeInfo(descriptor, pool)
|
||||
}
|
||||
|
||||
// Write ModuleMainClass attribute if present.
|
||||
descriptor.mainClass().ifPresent { mainClass ->
|
||||
writeAttribute("ModuleMainClass", pool) {
|
||||
it.writeModuleMainClassAttributeInfo(mainClass, pool)
|
||||
}
|
||||
}
|
||||
|
||||
// Write ModulePackages attribute if any are present.
|
||||
descriptor.packages().takeIf { it.isNotEmpty() }?.let { packages ->
|
||||
writeAttribute("ModulePackages", pool) {
|
||||
it.writeModulePackagesAttributeInfo(packages, pool)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun DataOutputStream.writeAttribute(attributeName: String, pool: ConstantPool, body: (DataOutputStream) -> Unit) {
|
||||
// attribute_info {
|
||||
// u2 attribute_name_index;
|
||||
// u4 attribute_length;
|
||||
// u1 info[attribute_length];
|
||||
// }
|
||||
|
||||
val bytes = byteArrayBuilder { body(it) }
|
||||
|
||||
writeShort(pool.getOrCreateUtf8(attributeName))
|
||||
writeInt(bytes.size)
|
||||
write(bytes)
|
||||
}
|
||||
|
||||
private fun DataOutputStream.writeModuleAttributeInfo(descriptor: ModuleDescriptor, pool: ConstantPool) {
|
||||
// Write module name.
|
||||
writeShort(pool.getOrCreateModule(descriptor.name()))
|
||||
|
||||
// Write module flags.
|
||||
var flags = 0x0000
|
||||
for (modifier in descriptor.modifiers()) {
|
||||
when (modifier) {
|
||||
ModuleDescriptor.Modifier.OPEN -> flags = flags or MODULE_ACC_OPEN
|
||||
ModuleDescriptor.Modifier.SYNTHETIC -> flags = flags or MODULE_ACC_SYNTHETIC
|
||||
ModuleDescriptor.Modifier.MANDATED -> flags = flags or MODULE_ACC_MANDATED
|
||||
ModuleDescriptor.Modifier.AUTOMATIC, null -> Unit
|
||||
}
|
||||
}
|
||||
writeShort(flags)
|
||||
|
||||
// Write module version.
|
||||
writeShort(descriptor.rawVersion().map { pool.getOrCreateUtf8(it) }.orElse(0))
|
||||
|
||||
// Write requires.
|
||||
writeShort(descriptor.requires().size)
|
||||
for (require in descriptor.requires().sorted()) {
|
||||
writeShort(pool.getOrCreateModule(require.name()))
|
||||
|
||||
flags = 0x0000
|
||||
for (modifier in require.modifiers()) {
|
||||
when (modifier) {
|
||||
ModuleDescriptor.Requires.Modifier.TRANSITIVE -> flags = flags or REQ_ACC_TRANSITIVE
|
||||
ModuleDescriptor.Requires.Modifier.STATIC -> flags = flags or REQ_ACC_STATIC_PHASE
|
||||
ModuleDescriptor.Requires.Modifier.SYNTHETIC -> flags = flags or REQ_ACC_SYNTHETIC
|
||||
ModuleDescriptor.Requires.Modifier.MANDATED -> flags = flags or REQ_ACC_MANDATED
|
||||
null -> Unit
|
||||
}
|
||||
}
|
||||
writeShort(flags)
|
||||
|
||||
writeShort(require.rawCompiledVersion().map { pool.getOrCreateUtf8(it) }.orElse(0))
|
||||
}
|
||||
|
||||
// Write exports.
|
||||
writeShort(descriptor.exports().size)
|
||||
for (export in descriptor.exports().sorted()) {
|
||||
writeShort(pool.getOrCreatePackage(export.source()))
|
||||
|
||||
flags = 0x0000
|
||||
for (modifier in export.modifiers()) {
|
||||
when (modifier) {
|
||||
ModuleDescriptor.Exports.Modifier.SYNTHETIC -> flags = flags or EXP_ACC_SYNTHETIC
|
||||
ModuleDescriptor.Exports.Modifier.MANDATED -> flags = flags or EXP_ACC_MANDATED
|
||||
null -> Unit
|
||||
}
|
||||
}
|
||||
writeShort(flags)
|
||||
|
||||
writeShort(export.targets().size)
|
||||
for (target in export.targets().sorted()) {
|
||||
writeShort(pool.getOrCreateModule(target))
|
||||
}
|
||||
}
|
||||
|
||||
// Write opens.
|
||||
writeShort(descriptor.opens().size)
|
||||
for (open in descriptor.opens().sorted()) {
|
||||
writeShort(pool.getOrCreatePackage(open.source()))
|
||||
|
||||
flags = 0x0000
|
||||
for (modifier in open.modifiers()) {
|
||||
when (modifier) {
|
||||
ModuleDescriptor.Opens.Modifier.SYNTHETIC -> flags = flags or OP_ACC_SYNTHETIC
|
||||
ModuleDescriptor.Opens.Modifier.MANDATED -> flags = flags or OP_ACC_MANDATED
|
||||
null -> Unit
|
||||
}
|
||||
}
|
||||
writeShort(flags)
|
||||
|
||||
writeShort(open.targets().size)
|
||||
for (target in open.targets().sorted()) {
|
||||
writeShort(pool.getOrCreateModule(target))
|
||||
}
|
||||
}
|
||||
|
||||
// Write uses.
|
||||
writeShort(descriptor.uses().size)
|
||||
for (use in descriptor.uses().sorted()) {
|
||||
writeShort(pool.getOrCreateClass(use))
|
||||
}
|
||||
|
||||
// Write provides.
|
||||
writeShort(descriptor.provides().size)
|
||||
for (provide in descriptor.provides().sorted()) {
|
||||
writeShort(pool.getOrCreateClass(provide.service()))
|
||||
writeShort(provide.providers().size)
|
||||
for (provider in provide.providers().sorted()) {
|
||||
writeShort(pool.getOrCreateClass(provider))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun DataOutputStream.writeSourceFileAttributeInfo(fileName: String, pool: ConstantPool) {
|
||||
writeShort(pool.getOrCreateUtf8(fileName))
|
||||
}
|
||||
|
||||
private fun DataOutputStream.writeModuleMainClassAttributeInfo(mainClass: String, pool: ConstantPool) {
|
||||
writeShort(pool.getOrCreateClass(mainClass))
|
||||
}
|
||||
|
||||
private fun DataOutputStream.writeModulePackagesAttributeInfo(packages: Set<String>, pool: ConstantPool) {
|
||||
writeShort(packages.size)
|
||||
for (packageName in packages.sorted()) {
|
||||
writeShort(pool.getOrCreatePackage(packageName))
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun byteArrayBuilder(body: (DataOutputStream) -> Unit): ByteArray {
|
||||
return ByteArrayOutputStream().use { baos ->
|
||||
DataOutputStream(baos).use { dos -> body(dos) }
|
||||
|
||||
baos.toByteArray()
|
||||
}
|
||||
}
|
||||
|
||||
private fun DataOutputStream.writeConstant(constant: Constant) {
|
||||
when (constant) {
|
||||
is Constant.Utf8 -> {
|
||||
writeByte(ConstantPoolTag.Utf8.value)
|
||||
writeUTF(constant.value)
|
||||
}
|
||||
|
||||
is Constant.Class -> {
|
||||
writeByte(ConstantPoolTag.Class.value)
|
||||
writeShort(constant.classNameIndex)
|
||||
}
|
||||
|
||||
is Constant.Module -> {
|
||||
writeByte(ConstantPoolTag.Module.value)
|
||||
writeShort(constant.moduleNameIndex)
|
||||
}
|
||||
|
||||
is Constant.Package -> {
|
||||
writeByte(ConstantPoolTag.Package.value)
|
||||
writeShort(constant.packageNameIndex)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ConstantPool {
|
||||
private var index = 1
|
||||
|
||||
val constants = mutableMapOf<Constant, Int>()
|
||||
|
||||
// Specification defines constant pool count to be count of entries in the constant pool table plus one.
|
||||
val count get() = constants.size + 1
|
||||
|
||||
fun getOrCreateUtf8(string: String): Int {
|
||||
return constants.computeIfAbsent(Constant.Utf8(string)) { index++ }
|
||||
}
|
||||
|
||||
fun getOrCreateClass(className: String): Int {
|
||||
val classNameIndex = getOrCreateUtf8(internalFormName(className))
|
||||
return constants.computeIfAbsent(Constant.Class(classNameIndex)) { index++ }
|
||||
}
|
||||
|
||||
fun getOrCreateModule(moduleName: String): Int {
|
||||
// Module names are NOT encoded in the "internal form".
|
||||
val moduleNameIndex = getOrCreateUtf8(moduleName)
|
||||
return constants.computeIfAbsent(Constant.Module(moduleNameIndex)) { index++ }
|
||||
}
|
||||
|
||||
fun getOrCreatePackage(packageName: String): Int {
|
||||
val packageNameIndex = getOrCreateUtf8(internalFormName(packageName))
|
||||
return constants.computeIfAbsent(Constant.Package(packageNameIndex)) { index++ }
|
||||
}
|
||||
|
||||
private fun internalFormName(name: String): String {
|
||||
return name.replace(".", "/")
|
||||
}
|
||||
}
|
||||
|
||||
private sealed interface Constant {
|
||||
data class Utf8(val value: String) : Constant
|
||||
data class Class(val classNameIndex: Int) : Constant
|
||||
data class Module(val moduleNameIndex: Int) : Constant
|
||||
data class Package(val packageNameIndex: Int) : Constant
|
||||
}
|
||||
|
||||
private enum class ConstantPoolTag(val value: Int) {
|
||||
Class(7),
|
||||
Fieldref(9),
|
||||
Methodref(10),
|
||||
InterfaceMethodref(11),
|
||||
String(8),
|
||||
Integer(3),
|
||||
Float(4),
|
||||
Long(5),
|
||||
Double(6),
|
||||
NameAndType(12),
|
||||
Utf8(1),
|
||||
MethodHandle(15),
|
||||
MethodType(16),
|
||||
InvokeDynamic(18),
|
||||
Module(19),
|
||||
Package(20),
|
||||
}
|
||||
|
||||
private const val CLASS_FILE_MAGIC = 0xcafebabe.toInt()
|
||||
|
||||
// Access flag denoting that this class file is a module.
|
||||
private const val ACC_MODULE = 0x8000
|
||||
|
||||
// Module flags.
|
||||
private const val MODULE_ACC_OPEN = 0x0020
|
||||
private const val MODULE_ACC_SYNTHETIC = 0x1000
|
||||
private const val MODULE_ACC_MANDATED = 0x8000
|
||||
|
||||
// Requires flags.
|
||||
private const val REQ_ACC_TRANSITIVE = 0x0020
|
||||
private const val REQ_ACC_STATIC_PHASE = 0x0040
|
||||
private const val REQ_ACC_SYNTHETIC = 0x1000
|
||||
private const val REQ_ACC_MANDATED = 0x8000
|
||||
|
||||
// Exports flags.
|
||||
private const val EXP_ACC_SYNTHETIC = 0x1000
|
||||
private const val EXP_ACC_MANDATED = 0x8000
|
||||
|
||||
// Opens flags.
|
||||
private const val OP_ACC_SYNTHETIC = 0x1000
|
||||
private const val OP_ACC_MANDATED = 0x8000
|
||||
@@ -0,0 +1,393 @@
|
||||
package fleet.buildtool.codecache
|
||||
|
||||
import com.intellij.util.lang.ImmutableZipFile
|
||||
import fleet.buildtool.fs.extractZip
|
||||
import fleet.buildtool.platform.Arch
|
||||
import fleet.buildtool.platform.Platform
|
||||
import fleet.buildtool.platform.toS3DistributionSlug
|
||||
import kotlinx.coroutines.*
|
||||
import org.slf4j.Logger
|
||||
import org.jetbrains.intellij.build.io.*
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import kotlin.io.path.*
|
||||
|
||||
const val allowedLicenseClientConsumerModule: String = "fleet.plugins.ship.common"
|
||||
private fun allowedLicenseClientConsumerJar(version: String) = "fleet.common-$version.jar" // fleet.common jar
|
||||
const val licenseClientApiJpmsModuleName: String = "ls.client.api"
|
||||
private const val licenseClientApiJarName = "ls-client-api.jar"
|
||||
private val jnaJarNamePattern = Regex("jna-\\d.*\\.jar")
|
||||
private val kotlinStdlibJarNamePattern = Regex("kotlin-stdlib-\\d.*\\.jar")
|
||||
const val allowedDockCoroutinesConsumerModule: String = "fleet.dock.runtime"
|
||||
const val dockCoroutinesJpmsModuleName: String = "fleet.dock.coroutines"
|
||||
private fun dockCoroutinesJarName(version: String) = "fleet.dock.coroutines-$version.jar"
|
||||
|
||||
private typealias Jar = Path
|
||||
|
||||
data class PackedJar(
|
||||
val path: Path,
|
||||
val needsScrambling: Boolean,
|
||||
val nativeFilesByPlatform: Map<Platform, List<Path>>,
|
||||
)
|
||||
|
||||
data class PackedModule(
|
||||
val moduleName: String,
|
||||
val jarFiles: List<PackedJar>,
|
||||
)
|
||||
|
||||
/**
|
||||
* Represents a module that can be packed as one or more jars.
|
||||
*/
|
||||
interface ModuleToPack {
|
||||
val name: String
|
||||
val filesToPack: List<Path>
|
||||
}
|
||||
|
||||
sealed class NativeLibraryExtractor {
|
||||
/**
|
||||
* Jars would be left untouched.
|
||||
*/
|
||||
object Noop : NativeLibraryExtractor()
|
||||
|
||||
/**
|
||||
* Native libraries inside jars will be extracted to [directory]
|
||||
*/
|
||||
data class ExtractTo(val directory: Path) : NativeLibraryExtractor()
|
||||
}
|
||||
|
||||
class ModulePacker(
|
||||
private val directory: Path,
|
||||
private val nativeLibraryExtractor: NativeLibraryExtractor,
|
||||
private val version: String,
|
||||
private val logger: Logger,
|
||||
) {
|
||||
private val cache = ConcurrentHashMap<Path, CacheEntry>()
|
||||
|
||||
private data class CacheEntry(
|
||||
val jar: PackedJar,
|
||||
val shadowed: Path?,
|
||||
)
|
||||
|
||||
fun packModule(module: ModuleToPack): PackedModule {
|
||||
val licenseClientApiJar = module.filesToPack.singleOrNullOrThrow { // direct dependency on license client?
|
||||
it.name.contains(licenseClientApiJarName)
|
||||
}
|
||||
require(licenseClientApiJar == null || module.name == allowedLicenseClientConsumerModule) {
|
||||
"module '${module.name} is not allowed to pack '$licenseClientApiJarName'"
|
||||
}
|
||||
val allowedLicenseClientConsumerJarName = allowedLicenseClientConsumerJar(version)
|
||||
require(licenseClientApiJar == null || module.filesToPack.singleOrNull { it.name == allowedLicenseClientConsumerJarName } != null) {
|
||||
"module '${module.name} shadows '$licenseClientApiJar' so it must want to pack a jar '$allowedLicenseClientConsumerJarName'"
|
||||
}
|
||||
|
||||
val dockCoroutinesHackJar = module.filesToPack.singleOrNullOrThrow { it.name == dockCoroutinesJarName(version) }
|
||||
require(dockCoroutinesHackJar == null || module.name == allowedDockCoroutinesConsumerModule) {
|
||||
"module '${module.name} is not allowed to pack '$dockCoroutinesHackJar'"
|
||||
}
|
||||
require(dockCoroutinesHackJar == null || module.filesToPack.singleOrNull { f -> kotlinStdlibJarNamePattern.matches(f.name) } != null) {
|
||||
"Module '${module.name}' tries to shadow '$dockCoroutinesHackJar' but is not containing only a single jar matching '$kotlinStdlibJarNamePattern'"
|
||||
}
|
||||
|
||||
require(licenseClientApiJar == null || dockCoroutinesHackJar == null) {
|
||||
"Module '${module.name}' tries to shadow both '$licenseClientApiJar' and '$dockCoroutinesHackJar', this is not allowed by our build tool, contact #fleet-platform"
|
||||
}
|
||||
|
||||
val toPack = module.filesToPack.filter { it != licenseClientApiJar && it != dockCoroutinesHackJar } // never pack the shadowed jar
|
||||
val jars = runBlocking(Dispatchers.IO) {
|
||||
toPack.mapConcurrent { path ->
|
||||
val (shadowed, needsScrambling) = when {
|
||||
licenseClientApiJar == null && dockCoroutinesHackJar == null -> null to false
|
||||
dockCoroutinesHackJar != null && kotlinStdlibJarNamePattern.matches(path.name) -> dockCoroutinesHackJar to false
|
||||
licenseClientApiJar != null && path.name == allowedLicenseClientConsumerJarName -> licenseClientApiJar to true
|
||||
else -> null to false
|
||||
}
|
||||
pack(path, needsScrambling = needsScrambling, shadowed = shadowed)
|
||||
}
|
||||
}
|
||||
return PackedModule(
|
||||
moduleName = module.name,
|
||||
jarFiles = jars,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Packs the given [file] into an [ImmutableZipFile] jar.
|
||||
* Also, shadows the given [shadowed], if any, inside the resulting packed jar.
|
||||
* Also, extracts JNA native libraries files from the resulting jar and expose them through [PackedJar.nativeFiles].
|
||||
*
|
||||
* @param file either a directory of classes representing an output of compilation of a module, or a `jar` to be repacked as immutable
|
||||
* @param needsScrambling whether the resulting packed jar will require scrambling in further step of the build tool
|
||||
* @param shadowed if specified, a jar to shadow (extract inside) the resulting packed jar
|
||||
*/
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun pack(file: Path, needsScrambling: Boolean, shadowed: Path?): PackedJar {
|
||||
logger.info("Packing/repacking '$file' (needsScrambling=$needsScrambling, shadowing=$shadowed)")
|
||||
require(!file.absolutePathString().contains(licenseClientApiJarName)) {
|
||||
"$licenseClientApiJarName should have been shadowed, contact #fleet-support"
|
||||
}
|
||||
return cache.compute(file) { fileToPack, existing ->
|
||||
when (existing) {
|
||||
null -> {
|
||||
directory.createDirectories()
|
||||
logger.debug("'{}' (needsScrambling={}, shadowing={}) not found in cache, packing it...", file, needsScrambling, shadowed)
|
||||
val jar = when {
|
||||
Files.isDirectory(fileToPack) -> packToImmutableJar(
|
||||
path = fileToPack,
|
||||
needsScrambling = needsScrambling,
|
||||
shadowed = shadowed,
|
||||
target = directory.resolve("${fileToPack.fileName}-$version.jar"),
|
||||
logger = logger,
|
||||
)
|
||||
|
||||
nativeLibraryExtractor is NativeLibraryExtractor.ExtractTo && jnaJarNamePattern.matches(fileToPack.name) -> repackToImmutableJarExtractingNativeFiles(
|
||||
fileToPack,
|
||||
needsScrambling,
|
||||
shadowed,
|
||||
targetDirectory = directory,
|
||||
nativeLibrariesTargetDirectory = nativeLibraryExtractor.directory,
|
||||
logger = logger,
|
||||
)
|
||||
|
||||
nativeLibraryExtractor is NativeLibraryExtractor.ExtractTo && fileToPack.name.contains("kotlin-desktop-toolkit") -> repackToImmutableJarExtractingNativeFiles2(
|
||||
fileToPack,
|
||||
needsScrambling,
|
||||
shadowed,
|
||||
targetDirectory = directory,
|
||||
nativeLibrariesTargetDirectory = nativeLibraryExtractor.directory,
|
||||
logger = logger,
|
||||
)
|
||||
|
||||
fileToPack.name.endsWith(".jar") -> packToImmutableJar(
|
||||
path = fileToPack,
|
||||
needsScrambling = needsScrambling,
|
||||
shadowed = shadowed,
|
||||
target = directory.resolve(fileToPack.name),
|
||||
logger = logger,
|
||||
)
|
||||
|
||||
else -> error("Cannot pack file which is neither directory or jar: '$file'")
|
||||
}
|
||||
|
||||
CacheEntry(
|
||||
jar = jar,
|
||||
shadowed = shadowed,
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
require(needsScrambling == existing.jar.needsScrambling) {
|
||||
"""
|
||||
|'$file' has already been packed/repacked but with different instructions about scrambling, this is very likely a bug in the build tool, contact #fleet-support
|
||||
|Existing: ${existing.jar.needsScrambling}
|
||||
|Current: ${needsScrambling}
|
||||
""".trimMargin()
|
||||
}
|
||||
require(shadowed == existing.shadowed) {
|
||||
"""
|
||||
|'$file' has already been packed/repacked but with different instructions about shadowing, this is very likely a bug in the build tool, contact #fleet-support
|
||||
|Existing: ${existing.shadowed}
|
||||
|Current: ${shadowed}
|
||||
""".trimMargin()
|
||||
}
|
||||
existing
|
||||
}
|
||||
}
|
||||
}?.jar ?: error("must have either found the jar in cache, or pack/repack it")
|
||||
}
|
||||
}
|
||||
|
||||
fun packToImmutableJar(path: Path, needsScrambling: Boolean, shadowed: Path?, target: Path, logger: Logger): PackedJar {
|
||||
target.deleteIfExists()
|
||||
target.parent.createDirectories()
|
||||
val intermediateJar = when {
|
||||
path.isDirectory() -> packDirectoriesToImmutableJar(target, listOf(path)) // TODO: add direct support for directories packing in `packToImmutableJar` instead
|
||||
else -> path
|
||||
}
|
||||
val jar = packToImmutableJar(target, listOfNotNull(shadowed, intermediateJar), logger) // order of jars list matters, shadowed content overrides original content (reason: DebugProbes.kt of shadowed `:dock-coroutines` subproject must override `kotlin-stdlib` ones)
|
||||
return PackedJar(
|
||||
path = jar,
|
||||
needsScrambling = needsScrambling,
|
||||
nativeFilesByPlatform = emptyMap(),
|
||||
)
|
||||
}
|
||||
|
||||
// TODO: make it more generic, not only for JNA
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun repackToImmutableJarExtractingNativeFiles(jar: Path, needsScrambling: Boolean, shadowed: Path?, targetDirectory: Path, nativeLibrariesTargetDirectory: Path, logger: Logger): PackedJar {
|
||||
require(shadowed == null) { "shadowing not supported" }
|
||||
val tmp = Files.createTempDirectory("repacking").resolve(jar.name)
|
||||
extractZip(archive = jar, destination = tmp, stripTopLevelFolder = false, cleanDestination = false, temporaryDir = tmp, logger = logger)
|
||||
val nativeFiles = tmp.resolve("com/sun/jna").listDirectoryEntries()
|
||||
.filter { it.isDirectory() }
|
||||
.mapNotNull { it.listDirectoryEntries().singleOrNull() }
|
||||
.filter { lib -> lib.extension in setOf("jnilib", "dylib", "so", "tbd", "dll", "a") }
|
||||
.mapNotNull { lib ->
|
||||
val libraryPlatform = detectNativeLibraryPlatform(lib.parent.name)
|
||||
if (libraryPlatform != null) {
|
||||
val target = nativeLibrariesTargetDirectory.resolve(libraryPlatform.toS3DistributionSlug()).createDirectories()
|
||||
val targetFile = lib.moveTo(target.resolve(lib.name), overwrite = true)
|
||||
libraryPlatform to targetFile
|
||||
}
|
||||
else {
|
||||
lib.deleteExisting()
|
||||
null
|
||||
}
|
||||
}.groupBy({ (platform, _) -> platform }, { (_, file) -> file })
|
||||
val jar = packDirectoriesToImmutableJar(targetDirectory.resolve(jar.name), listOf(tmp))
|
||||
tmp.deleteRecursively()
|
||||
return PackedJar(
|
||||
path = jar,
|
||||
needsScrambling = needsScrambling,
|
||||
nativeFilesByPlatform = nativeFiles,
|
||||
)
|
||||
}
|
||||
|
||||
// TODO: delete once `repackToImmutableJarExtractingNativeFiles` is generic
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun repackToImmutableJarExtractingNativeFiles2(jar: Path, needsScrambling: Boolean, shadowed: Path?, targetDirectory: Path, nativeLibrariesTargetDirectory: Path, logger: Logger): PackedJar {
|
||||
require(shadowed == null) { "shadowing not supported" }
|
||||
val tmp = Files.createTempDirectory("repacking").resolve(jar.name)
|
||||
extractZip(archive = jar, destination = tmp, cleanDestination = false, stripTopLevelFolder = false, temporaryDir = tmp, logger = logger)
|
||||
val nativeFiles = tmp.listDirectoryEntries()
|
||||
.filter { lib -> lib.extension in setOf("dylib", "so", "dll") }
|
||||
.mapNotNull { lib ->
|
||||
val libName = lib.name
|
||||
val libraryPlatform = detectNativeLibraryPlatformBasedOnItsName(libName)
|
||||
if (libraryPlatform != null) {
|
||||
val target = nativeLibrariesTargetDirectory.resolve(libraryPlatform.toS3DistributionSlug()).createDirectories()
|
||||
val targetFile = lib.moveTo(target.resolve(lib.name), overwrite = true)
|
||||
libraryPlatform to targetFile
|
||||
}
|
||||
else {
|
||||
lib.deleteExisting()
|
||||
null
|
||||
}
|
||||
}.groupBy({ (platform, _) -> platform }, { (_, file) -> file })
|
||||
val jar = packDirectoriesToImmutableJar(targetDirectory.resolve(jar.name), listOf(tmp))
|
||||
tmp.deleteRecursively()
|
||||
return PackedJar(
|
||||
path = jar,
|
||||
needsScrambling = needsScrambling,
|
||||
nativeFilesByPlatform = nativeFiles,
|
||||
)
|
||||
}
|
||||
|
||||
private fun packToImmutableJar(destinationJar: Path, jars: List<Path>, logger: Logger): Jar {
|
||||
require(jars.map { it.extension }.all { it == "jar" }) { "only jars are supported, got '$jars'" }
|
||||
val uniqueJar = jars.singleOrNull()
|
||||
when {
|
||||
uniqueJar != null && ImmutableZipFile.load(uniqueJar).use { it is ImmutableZipFile } -> uniqueJar.copyTo(destinationJar) // already an immutable jar, not repacking
|
||||
else -> {
|
||||
val packageIndexBuilder = PackageIndexBuilder(AddDirEntriesMode.NONE)
|
||||
destinationJar.parent.createDirectories()
|
||||
writeZipUsingTempFile(destinationJar, packageIndexBuilder = packageIndexBuilder) { zipOut ->
|
||||
val uniqueNames = HashMap<String, Path>()
|
||||
|
||||
for (jar in jars) {
|
||||
readZipFile(jar) { name, dataSupplier ->
|
||||
when { // TODO: instead of fixing the FIXMEs, could we instead write a `META-INF/MANIFEST.MF` merger with heuristics and hard failures in case it's not heuristically possible to merge them?
|
||||
name == "META-INF/MANIFEST.MF" && jar.name.contains("fleet.dock.coroutines") && jars.any { it.name.contains("kotlin-stdlib") } -> { // FIXME: remove this hack, we control `fleet.dock.coroutines`, could we remove the `META-INF/MANIFEST.MF` instead to avoid the conflict?
|
||||
logger.warn("WARNING: '$name' from '${jar.name}' is ignored, `fleet.dock.coroutines` jar has a `META-INF/MANIFEST.MF` which conflicts with the `kotlin-stdlib` one")
|
||||
}
|
||||
uniqueNames.contains(name) -> {
|
||||
logger.warn("WARNING: '$name' from '${jar.name}' is ignored, reason: tooling already packed the one present in '${uniqueNames[name]}'")
|
||||
}
|
||||
else -> {
|
||||
uniqueNames[name] = jar
|
||||
|
||||
packageIndexBuilder.addFile(name)
|
||||
val data = dataSupplier()
|
||||
zipOut.uncompressedData(name, data)
|
||||
}
|
||||
}
|
||||
ZipEntryProcessorResult.CONTINUE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return destinationJar
|
||||
}
|
||||
|
||||
private fun packDirectoriesToImmutableJar(destinationJar: Path, directories: List<Path>): Jar {
|
||||
require(directories.all { it.isDirectory() }) { "'$directories' must be a directory" }
|
||||
val tmpFile = Files.createTempFile(destinationJar.fileName.toString(), "")
|
||||
zip(tmpFile, directories.associateWith { "" }, overwrite = true)
|
||||
return tmpFile.moveTo(destinationJar)
|
||||
}
|
||||
|
||||
private suspend inline fun <T, U> Iterable<T>.mapConcurrent(crossinline transform: suspend (T) -> U): List<U> =
|
||||
coroutineScope {
|
||||
map {
|
||||
async { transform(it) }
|
||||
}.awaitAll()
|
||||
}
|
||||
|
||||
private fun <T> Iterable<T>.singleOrNullOrThrow(p: (T) -> Boolean = { true }): T? {
|
||||
var single: T? = null
|
||||
var found = false
|
||||
for (element in this) {
|
||||
if (p(element)) {
|
||||
if (found) {
|
||||
throw IllegalArgumentException("Collection contains more than one matching element: $single, $element")
|
||||
}
|
||||
single = element
|
||||
found = true
|
||||
}
|
||||
}
|
||||
return single
|
||||
}
|
||||
|
||||
private fun detectNativeLibraryPlatform(path: String): Platform? {
|
||||
return when {
|
||||
path.contains("x86-64") -> Arch.X64
|
||||
path.contains("aarch64") -> Arch.AARCH64
|
||||
else -> null
|
||||
}?.let { arch ->
|
||||
when {
|
||||
path.startsWith("win32") -> Platform.windows(arch)
|
||||
path.startsWith("linux") -> Platform.linux(arch)
|
||||
path.startsWith("darwin") -> Platform.macos(arch)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Skiko and KotlinDesktopToolkit follow this pattern
|
||||
*/
|
||||
private fun detectNativeLibraryPlatformBasedOnItsName(libName: String): Platform? {
|
||||
return when {
|
||||
libName.contains("x64") -> Arch.X64
|
||||
libName.contains("arm64") -> Arch.AARCH64
|
||||
else -> null
|
||||
}?.let { arch ->
|
||||
when {
|
||||
libName.contains("windows") -> Platform.windows(arch)
|
||||
libName.contains("linux") -> Platform.linux(arch)
|
||||
libName.contains("macos") -> Platform.macos(arch)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Iterable<File>.patchKotlinStdlibDebugProbes(dockCoroutinesJar: Path, repackedJarDir: Path, logger: Logger): List<File> {
|
||||
// This is a dirty hack to avoid bytebuddy injection at runtime
|
||||
// Business wise, it's valid, implementation wise, it's hacky as it breaks encapsulation.
|
||||
// All of that is supposed to change soon with the Gradle/Bazel plans.
|
||||
val (stdlibJars, others) = this.partition { kotlinStdlibJarNamePattern.matches(it.name) }
|
||||
val stdlibJar = stdlibJars.singleOrNull()?.toPath()
|
||||
return when {
|
||||
stdlibJar != null -> {
|
||||
val repackedStdlibJar = repackedJarDir.resolve(stdlibJar.name)
|
||||
repackedStdlibJar.deleteIfExists()
|
||||
repackedStdlibJar.parent.createDirectories()
|
||||
val jar = packToImmutableJar(repackedStdlibJar, listOf(dockCoroutinesJar, stdlibJar), logger)
|
||||
others + jar.toFile()
|
||||
}
|
||||
|
||||
else -> others
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package fleet.buildtool.codecache
|
||||
|
||||
import fleet.buildtool.platform.Platform
|
||||
import fleet.bundles.Coordinates
|
||||
import fleet.bundles.PluginDescriptor
|
||||
import fleet.bundles.PluginName
|
||||
import fleet.bundles.PluginVersion
|
||||
import fleet.bundles.metaAsCoordinates
|
||||
import java.nio.file.Path
|
||||
import kotlin.io.path.name
|
||||
|
||||
fun urlForPluginResource(baseUrl: String, plugin: PluginId, resourceFilename: String): String = "$baseUrl/api/fleet/download?xmlId=${plugin.name.name}&version=${plugin.version.versionString}&module=$resourceFilename"
|
||||
|
||||
data class PluginId(
|
||||
val name: PluginName,
|
||||
val version: PluginVersion,
|
||||
)
|
||||
|
||||
sealed class PluginPart {
|
||||
data class Bundled(val jar: HashedJar) : PluginPart() {
|
||||
override fun toCoordinates(baseUrl: String, pluginId: PluginId): Coordinates = Coordinates.Remote(
|
||||
url = urlForPluginResource(baseUrl, pluginId, jar.file.name),
|
||||
hash = jar.hash,
|
||||
)
|
||||
|
||||
override val codeCacheFile: Path = jar.file
|
||||
override val relativePathInCodeCache: Path = Path.of(jar.hash, codeCacheFile.fileName.toString())
|
||||
}
|
||||
|
||||
abstract fun toCoordinates(baseUrl: String, pluginId: PluginId): Coordinates
|
||||
abstract val codeCacheFile: Path
|
||||
|
||||
abstract val relativePathInCodeCache: Path
|
||||
}
|
||||
|
||||
fun PluginDescriptor.fsdaemonCoordinates(platform: Platform): Coordinates? = metaAsCoordinates(fsdaemonCoordinatesMetadataAttributeOf(platform))
|
||||
fun fsdaemonCoordinatesMetadataAttributeOf(platform: Platform): String = when (platform) {
|
||||
Platform.Linux.LinuxAarch64 -> "fsd-binaries-linux_aarch64"
|
||||
Platform.Linux.LinuxX64 -> "fsd-binaries-linux_x64"
|
||||
Platform.MacOs.MacOsAarch64 -> "fsd-binaries-macos_aarch64"
|
||||
Platform.MacOs.MacOsX64 -> "fsd-binaries-macos_x64"
|
||||
Platform.Windows.WindowsAarch64 -> "fsd-binaries-windows_aarch64"
|
||||
Platform.Windows.WindowsX64 -> "fsd-binaries-windows_x64"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
load("//:fleet/build/rules/fleet_module.bzl", _fleet_module = "fleet_module")
|
||||
|
||||
fleet_module = _fleet_module
|
||||
@@ -0,0 +1,67 @@
|
||||
### auto-generated section `build fleet.build.fs` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_fs",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
resourcegroup(
|
||||
name = "fs_test_resources",
|
||||
srcs = glob(["resourcesJvmTest/**/*"]),
|
||||
strip_prefix = "resourcesJvmTest"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "fs",
|
||||
module_name = "fleet.build.fs",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_fs",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:slf4j-api",
|
||||
"@lib//:fleet-github-luben-zstd-jni",
|
||||
"@lib//:fleet-tukaani-xz",
|
||||
"@lib//:commons-compress",
|
||||
"@lib//:commons-io",
|
||||
"@lib//:commons-lang3",
|
||||
]
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "fs_test_lib",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmTest/**/*.kt", "srcJvmTest/**/*.java", "srcJvmTest/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
resources = [":fs_test_resources"],
|
||||
kotlinc_opts = ":custom_fs",
|
||||
associates = [":fs"],
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:slf4j-api",
|
||||
"@lib//:fleet-github-luben-zstd-jni",
|
||||
"@lib//:fleet-tukaani-xz",
|
||||
"//fleet/junit4",
|
||||
"@lib//:kotlin-test",
|
||||
"@lib//:commons-compress",
|
||||
"@lib//:commons-io",
|
||||
"@lib//:commons-lang3",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.fs` end
|
||||
|
||||
### auto-generated section `test fleet.build.fs` start
|
||||
load("@community//build:tests-options.bzl", "jps_test")
|
||||
|
||||
jps_test(
|
||||
name = "fs_test",
|
||||
runtime_deps = [":fs_test_lib"]
|
||||
)
|
||||
### auto-generated section `test fleet.build.fs` end
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmTest" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/resourcesJvmTest" type="java-test-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="slf4j-api" level="project" />
|
||||
<orderEntry type="library" name="fleet:github.luben.zstd.jni" level="project" />
|
||||
<orderEntry type="library" name="fleet:tukaani.xz" level="project" />
|
||||
<orderEntry type="module" module-name="fleet.junit4" scope="TEST" />
|
||||
<orderEntry type="library" scope="TEST" name="kotlin-test" level="project" />
|
||||
<orderEntry type="library" name="commons-compress" level="project" />
|
||||
<orderEntry type="library" name="commons-io" level="project" />
|
||||
<orderEntry type="library" name="commons-lang3" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,76 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.fs"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.slf4j.slf4j.api2013636515.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
exclude(group = "org.slf4j", module = "slf4j-jdk14")
|
||||
}
|
||||
implementation(jps.com.github.luben.zstd.jni705422806.get())
|
||||
implementation(jps.org.tukaani.xz14489971.get())
|
||||
implementation(jps.org.apache.commons.commons.compress347955106.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "commons-codec", module = "commons-codec")
|
||||
exclude(group = "commons-io", module = "commons-io")
|
||||
exclude(group = "org.apache.commons", module = "commons-lang3")
|
||||
}
|
||||
implementation(jps.commons.io.commons.io645698317.get())
|
||||
implementation(jps.org.apache.commons.commons.lang3579297339.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
}
|
||||
sourceSets.commonTest.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.test542871666.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
}
|
||||
}
|
||||
sourceSets.jvmTest.dependencies {
|
||||
implementation(project(":fleet.junit4"))
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
example-abi-crlf.txt eol=crlf
|
||||
example-abi-lf.txt eol=lf
|
||||
example-abi-cr.txt eol=cr
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,514 @@
|
||||
public abstract interface class fleet/dock/api/DockApi : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockApi$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getRecentShips ()Lfleet/dock/api/RecentShips;
|
||||
public abstract fun getShipScope ()Lfleet/dock/api/ShipScope;
|
||||
public abstract fun perform (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public static synthetic fun perform$default (Lfleet/dock/api/DockApi;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)V
|
||||
public abstract fun withShip (Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockApi$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockApi$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockApi;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockContextElement : kotlin/coroutines/CoroutineContext$Element {
|
||||
public fun <init> (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;)V
|
||||
public final fun component1 ()Lfleet/dock/api/DockContextElement$Key;
|
||||
public final fun component2 ()Ljava/lang/Object;
|
||||
public final fun copy (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;)Lfleet/dock/api/DockContextElement;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockContextElement;Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;ILjava/lang/Object;)Lfleet/dock/api/DockContextElement;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public fun get (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public fun getKey ()Lfleet/dock/api/DockContextElement$Key;
|
||||
public synthetic fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public final fun getValue ()Ljava/lang/Object;
|
||||
public fun hashCode ()I
|
||||
public fun minusKey (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun plus (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockContextElement$Key : kotlin/coroutines/CoroutineContext$Key {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/DockContextElement$Key;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/DockContextElement$Key;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockExit : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockExit$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun join (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun quit ()V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockExit$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockExit$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockExit;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockIdentity : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockIdentity$Companion;
|
||||
public abstract fun getHostId ()Ljava/lang/String;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getUserId ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockIdentity$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockIdentity$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockIdentity;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPath {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/DockPath;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockPath;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/DockPath;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockPaths : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockPaths$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getPath (Lfleet/dock/api/DockPath;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPaths$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPaths$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockPaths;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/LocalStorage : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/LocalStorage$Companion;
|
||||
public abstract fun get (Lfleet/dock/api/LocalStorageKey;)Ljava/nio/ByteBuffer;
|
||||
public fun getGlobal ()Lfleet/dock/api/LocalStorage;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun put (Lfleet/dock/api/LocalStorageKey;Ljava/nio/ByteBuffer;)V
|
||||
public abstract fun remove (Lfleet/dock/api/LocalStorageKey;)Ljava/nio/ByteBuffer;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorage$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
public final fun withPrefix (Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorage$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/LocalStorage;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageKey {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lfleet/dock/api/LocalStorageKey;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/LocalStorageKey;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/LocalStorageKey;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public final fun getVersion ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageKt {
|
||||
public static final fun getString (Lfleet/dock/api/LocalStorage;Lfleet/dock/api/LocalStorageKey;)Ljava/lang/String;
|
||||
public static final fun putString (Lfleet/dock/api/LocalStorage;Lfleet/dock/api/LocalStorageKey;Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageState : kotlin/coroutines/CoroutineContext$Element {
|
||||
public fun <init> (Lfleet/dock/api/LocalStorageState$Key;Lkotlinx/coroutines/flow/MutableStateFlow;)V
|
||||
public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public fun get (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public fun getKey ()Lfleet/dock/api/LocalStorageState$Key;
|
||||
public synthetic fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public final fun getState ()Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||
public fun minusKey (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun plus (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageState$Key : kotlin/coroutines/CoroutineContext$Key {
|
||||
public fun <init> (Lfleet/dock/api/LocalStorageKey;)V
|
||||
public final fun component1 ()Lfleet/dock/api/LocalStorageKey;
|
||||
public final fun copy (Lfleet/dock/api/LocalStorageKey;)Lfleet/dock/api/LocalStorageState$Key;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/LocalStorageState$Key;Lfleet/dock/api/LocalStorageKey;ILjava/lang/Object;)Lfleet/dock/api/LocalStorageState$Key;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Lfleet/dock/api/LocalStorageKey;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/RecentShipInfo {
|
||||
public fun <init> (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipType;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipParams;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipState;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)Lfleet/dock/api/RecentShipInfo;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/RecentShipInfo;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/RecentShipInfo;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun getShipParams ()Lfleet/dock/api/ShipParams;
|
||||
public final fun getShipState ()Lfleet/dock/api/ShipState;
|
||||
public final fun getShipType ()Lfleet/dock/api/ShipType;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/RecentShips {
|
||||
public abstract fun forget (Lfleet/dock/api/ShipId;)V
|
||||
public abstract fun getState ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/RunningShipInfo {
|
||||
public fun <init> (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipType;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipParams;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipHandle;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;)Lfleet/dock/api/RunningShipInfo;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/RunningShipInfo;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/RunningShipInfo;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getHandle ()Lfleet/dock/api/ShipHandle;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun getShipParams ()Lfleet/dock/api/ShipParams;
|
||||
public final fun getShipType ()Lfleet/dock/api/ShipType;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/SelectedThemeState : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/SelectedThemeState$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getTheme ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun setTheme (Lfleet/dock/api/ThemeId;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeState$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeState$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/SelectedThemeState;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeStateKt {
|
||||
public static final fun getCurrent (Lfleet/dock/api/SelectedThemeState;)Lfleet/dock/api/ThemeId;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/Ship {
|
||||
public abstract fun getMeta ()Ljava/util/Map;
|
||||
public abstract fun getState ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun perform (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public static synthetic fun perform$default (Lfleet/dock/api/Ship;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipBundle {
|
||||
public fun <init> (Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/lang/ModuleLayer;
|
||||
public final fun component2 ()Ljava/util/Map;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component4 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)Lfleet/dock/api/ShipBundle;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipBundle;Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipBundle;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getLayers ()Ljava/util/Map;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getModuleLayer ()Ljava/lang/ModuleLayer;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipDescriptor {
|
||||
public fun <init> (Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipVersion;
|
||||
public final fun component3 ()Ljava/util/Map;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipSignature;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;)Lfleet/dock/api/ShipDescriptor;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipDescriptor;Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipDescriptor;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getLayers ()Ljava/util/Map;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getName ()Ljava/lang/String;
|
||||
public final fun getSignature ()Lfleet/dock/api/ShipSignature;
|
||||
public final fun getVersion ()Lfleet/dock/api/ShipVersion;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipHandle {
|
||||
public abstract fun await (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun join (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun shipIfCompleted ()Lfleet/dock/api/Ship;
|
||||
public abstract fun shutdown ()V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipId {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipId;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipId;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipId;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getId ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract class fleet/dock/api/ShipJarCoordinates {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarCoordinates$Local : fleet/dock/api/ShipJarCoordinates {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipJarCoordinates$Local;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarCoordinates$Local;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarCoordinates$Local;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getPath ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarCoordinates$Remote : fleet/dock/api/ShipJarCoordinates {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lfleet/dock/api/ShipJarCoordinates$Remote;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarCoordinates$Remote;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarCoordinates$Remote;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getHash ()Ljava/lang/String;
|
||||
public final fun getUrl ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarFile {
|
||||
public fun <init> (Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipJarCoordinates;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;)Lfleet/dock/api/ShipJarFile;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarFile;Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarFile;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getCoordinates ()Lfleet/dock/api/ShipJarCoordinates;
|
||||
public final fun getSerializedModuleDescriptor ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipLauncher {
|
||||
public abstract fun withShip (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipLauncherProvider {
|
||||
public abstract fun withShipLauncher (Lfleet/dock/api/ShipBundle;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayer {
|
||||
public fun <init> (Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/util/List;
|
||||
public final fun component2 ()Ljava/lang/ModuleLayer;
|
||||
public final fun component3 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;)Lfleet/dock/api/ShipLayer;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayer;Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipLayer;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getModuleLayer ()Ljava/lang/ModuleLayer;
|
||||
public final fun getModules ()Ljava/util/List;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayerDescriptor {
|
||||
public fun <init> (Ljava/util/Set;Ljava/util/Set;)V
|
||||
public final fun component1 ()Ljava/util/Set;
|
||||
public final fun component2 ()Ljava/util/Set;
|
||||
public final fun copy (Ljava/util/Set;Ljava/util/Set;)Lfleet/dock/api/ShipLayerDescriptor;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayerDescriptor;Ljava/util/Set;Ljava/util/Set;ILjava/lang/Object;)Lfleet/dock/api/ShipLayerDescriptor;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getModulePath ()Ljava/util/Set;
|
||||
public final fun getModules ()Ljava/util/Set;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayerSelector {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipLayerSelector;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayerSelector;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipLayerSelector;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getSelector ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipParams {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipParams;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipParams;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipParams;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getConfig ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract class fleet/dock/api/ShipProgressEvent {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Finished : fleet/dock/api/ShipProgressEvent {
|
||||
public static final field INSTANCE Lfleet/dock/api/ShipProgressEvent$Finished;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Progress : fleet/dock/api/ShipProgressEvent {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/Double;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/Double;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/Double;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/Double;)Lfleet/dock/api/ShipProgressEvent$Progress;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipProgressEvent$Progress;Ljava/lang/String;Ljava/lang/Double;ILjava/lang/Object;)Lfleet/dock/api/ShipProgressEvent$Progress;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getFraction ()Ljava/lang/Double;
|
||||
public final fun getMessage ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Started : fleet/dock/api/ShipProgressEvent {
|
||||
public static final field INSTANCE Lfleet/dock/api/ShipProgressEvent$Started;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipProgressReporting : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/ShipProgressReporting$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun report (Lfleet/dock/api/ShipId;Lfleet/dock/api/ShipProgressEvent;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressReporting$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressReporting$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/ShipProgressReporting;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipScope {
|
||||
public abstract fun getShips ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun launchShip (Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;)Lfleet/dock/api/ShipHandle;
|
||||
public abstract fun restartShip (Lfleet/dock/api/ShipId;Lfleet/dock/api/ShipDescriptor;)Lfleet/dock/api/ShipHandle;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipSignature {
|
||||
public fun <init> ([B)V
|
||||
public final fun component1 ()[B
|
||||
public final fun copy ([B)Lfleet/dock/api/ShipSignature;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipSignature;[BILjava/lang/Object;)Lfleet/dock/api/ShipSignature;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getBytes ()[B
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipState {
|
||||
public fun <init> (Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/util/Map;)Lfleet/dock/api/ShipState;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipState;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipState;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getData ()Ljava/util/Map;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipType {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipType;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipType;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipType;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getType ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipVersion {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipVersion;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipVersion;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipVersion;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getVersion ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/SpaceTokensStorage : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/SpaceTokensStorage$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getSpaceToken (Ljava/lang/String;)Ljava/lang/String;
|
||||
public abstract fun getTokens ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun putSpaceToken (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public abstract fun removeSpaceToken (Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SpaceTokensStorage$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SpaceTokensStorage$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/SpaceTokensStorage;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ThemeId {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ThemeId;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ThemeId;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ThemeId;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getIdent ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,514 @@
|
||||
public abstract interface class fleet/dock/api/DockApi : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockApi$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getRecentShips ()Lfleet/dock/api/RecentShips;
|
||||
public abstract fun getShipScope ()Lfleet/dock/api/ShipScope;
|
||||
public abstract fun perform (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public static synthetic fun perform$default (Lfleet/dock/api/DockApi;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)V
|
||||
public abstract fun withShip (Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockApi$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockApi$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockApi;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockApi;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockContextElement : kotlin/coroutines/CoroutineContext$Element {
|
||||
public fun <init> (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;)V
|
||||
public final fun component1 ()Lfleet/dock/api/DockContextElement$Key;
|
||||
public final fun component2 ()Ljava/lang/Object;
|
||||
public final fun copy (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;)Lfleet/dock/api/DockContextElement;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockContextElement;Lfleet/dock/api/DockContextElement$Key;Ljava/lang/Object;ILjava/lang/Object;)Lfleet/dock/api/DockContextElement;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public fun get (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public fun getKey ()Lfleet/dock/api/DockContextElement$Key;
|
||||
public synthetic fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public final fun getValue ()Ljava/lang/Object;
|
||||
public fun hashCode ()I
|
||||
public fun minusKey (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun plus (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockContextElement$Key : kotlin/coroutines/CoroutineContext$Key {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/DockContextElement$Key;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockContextElement$Key;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/DockContextElement$Key;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockExit : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockExit$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun join (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun quit ()V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockExit$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockExit$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockExit;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockExit;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockIdentity : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockIdentity$Companion;
|
||||
public abstract fun getHostId ()Ljava/lang/String;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getUserId ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockIdentity$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockIdentity$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockIdentity;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockIdentity;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPath {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/DockPath;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/DockPath;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/DockPath;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/DockPaths : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/DockPaths$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getPath (Lfleet/dock/api/DockPath;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPaths$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/DockPaths$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/DockPaths;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/DockPaths;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/LocalStorage : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/LocalStorage$Companion;
|
||||
public abstract fun get (Lfleet/dock/api/LocalStorageKey;)Ljava/nio/ByteBuffer;
|
||||
public fun getGlobal ()Lfleet/dock/api/LocalStorage;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun put (Lfleet/dock/api/LocalStorageKey;Ljava/nio/ByteBuffer;)V
|
||||
public abstract fun remove (Lfleet/dock/api/LocalStorageKey;)Ljava/nio/ByteBuffer;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorage$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
public final fun withPrefix (Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorage$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/LocalStorage;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/LocalStorage;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageKey {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lfleet/dock/api/LocalStorageKey;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/LocalStorageKey;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/LocalStorageKey;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public final fun getVersion ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageKt {
|
||||
public static final fun getString (Lfleet/dock/api/LocalStorage;Lfleet/dock/api/LocalStorageKey;)Ljava/lang/String;
|
||||
public static final fun putString (Lfleet/dock/api/LocalStorage;Lfleet/dock/api/LocalStorageKey;Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageState : kotlin/coroutines/CoroutineContext$Element {
|
||||
public fun <init> (Lfleet/dock/api/LocalStorageState$Key;Lkotlinx/coroutines/flow/MutableStateFlow;)V
|
||||
public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public fun get (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public fun getKey ()Lfleet/dock/api/LocalStorageState$Key;
|
||||
public synthetic fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public final fun getState ()Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||
public fun minusKey (Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public fun plus (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/LocalStorageState$Key : kotlin/coroutines/CoroutineContext$Key {
|
||||
public fun <init> (Lfleet/dock/api/LocalStorageKey;)V
|
||||
public final fun component1 ()Lfleet/dock/api/LocalStorageKey;
|
||||
public final fun copy (Lfleet/dock/api/LocalStorageKey;)Lfleet/dock/api/LocalStorageState$Key;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/LocalStorageState$Key;Lfleet/dock/api/LocalStorageKey;ILjava/lang/Object;)Lfleet/dock/api/LocalStorageState$Key;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getKey ()Lfleet/dock/api/LocalStorageKey;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/RecentShipInfo {
|
||||
public fun <init> (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipType;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipParams;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipState;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)Lfleet/dock/api/RecentShipInfo;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/RecentShipInfo;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipState;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/RecentShipInfo;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun getShipParams ()Lfleet/dock/api/ShipParams;
|
||||
public final fun getShipState ()Lfleet/dock/api/ShipState;
|
||||
public final fun getShipType ()Lfleet/dock/api/ShipType;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/RecentShips {
|
||||
public abstract fun forget (Lfleet/dock/api/ShipId;)V
|
||||
public abstract fun getState ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/RunningShipInfo {
|
||||
public fun <init> (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipType;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipParams;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipHandle;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;)Lfleet/dock/api/RunningShipInfo;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/RunningShipInfo;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipHandle;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/RunningShipInfo;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getHandle ()Lfleet/dock/api/ShipHandle;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun getShipParams ()Lfleet/dock/api/ShipParams;
|
||||
public final fun getShipType ()Lfleet/dock/api/ShipType;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/SelectedThemeState : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/SelectedThemeState$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getTheme ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun setTheme (Lfleet/dock/api/ThemeId;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeState$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeState$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/SelectedThemeState;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/SelectedThemeState;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SelectedThemeStateKt {
|
||||
public static final fun getCurrent (Lfleet/dock/api/SelectedThemeState;)Lfleet/dock/api/ThemeId;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/Ship {
|
||||
public abstract fun getMeta ()Ljava/util/Map;
|
||||
public abstract fun getState ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun perform (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public static synthetic fun perform$default (Lfleet/dock/api/Ship;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipBundle {
|
||||
public fun <init> (Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/lang/ModuleLayer;
|
||||
public final fun component2 ()Ljava/util/Map;
|
||||
public final fun component3 ()Lfleet/dock/api/ShipDescriptor;
|
||||
public final fun component4 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;)Lfleet/dock/api/ShipBundle;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipBundle;Ljava/lang/ModuleLayer;Ljava/util/Map;Lfleet/dock/api/ShipDescriptor;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipBundle;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getLayers ()Ljava/util/Map;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getModuleLayer ()Ljava/lang/ModuleLayer;
|
||||
public final fun getShipBundleDescriptor ()Lfleet/dock/api/ShipDescriptor;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipDescriptor {
|
||||
public fun <init> (Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Lfleet/dock/api/ShipVersion;
|
||||
public final fun component3 ()Ljava/util/Map;
|
||||
public final fun component4 ()Lfleet/dock/api/ShipSignature;
|
||||
public final fun component5 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;)Lfleet/dock/api/ShipDescriptor;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipDescriptor;Ljava/lang/String;Lfleet/dock/api/ShipVersion;Ljava/util/Map;Lfleet/dock/api/ShipSignature;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipDescriptor;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getLayers ()Ljava/util/Map;
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getName ()Ljava/lang/String;
|
||||
public final fun getSignature ()Lfleet/dock/api/ShipSignature;
|
||||
public final fun getVersion ()Lfleet/dock/api/ShipVersion;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipHandle {
|
||||
public abstract fun await (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun join (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public abstract fun shipIfCompleted ()Lfleet/dock/api/Ship;
|
||||
public abstract fun shutdown ()V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipId {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipId;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipId;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipId;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getId ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract class fleet/dock/api/ShipJarCoordinates {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarCoordinates$Local : fleet/dock/api/ShipJarCoordinates {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipJarCoordinates$Local;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarCoordinates$Local;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarCoordinates$Local;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getPath ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarCoordinates$Remote : fleet/dock/api/ShipJarCoordinates {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lfleet/dock/api/ShipJarCoordinates$Remote;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarCoordinates$Remote;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarCoordinates$Remote;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getHash ()Ljava/lang/String;
|
||||
public final fun getUrl ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipJarFile {
|
||||
public fun <init> (Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;)V
|
||||
public final fun component1 ()Lfleet/dock/api/ShipJarCoordinates;
|
||||
public final fun component2 ()Ljava/lang/String;
|
||||
public final fun copy (Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;)Lfleet/dock/api/ShipJarFile;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipJarFile;Lfleet/dock/api/ShipJarCoordinates;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipJarFile;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getCoordinates ()Lfleet/dock/api/ShipJarCoordinates;
|
||||
public final fun getSerializedModuleDescriptor ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipLauncher {
|
||||
public abstract fun withShip (Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipLauncherProvider {
|
||||
public abstract fun withShipLauncher (Lfleet/dock/api/ShipBundle;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayer {
|
||||
public fun <init> (Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/util/List;
|
||||
public final fun component2 ()Ljava/lang/ModuleLayer;
|
||||
public final fun component3 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;)Lfleet/dock/api/ShipLayer;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayer;Ljava/util/List;Ljava/lang/ModuleLayer;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipLayer;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getMeta ()Ljava/util/Map;
|
||||
public final fun getModuleLayer ()Ljava/lang/ModuleLayer;
|
||||
public final fun getModules ()Ljava/util/List;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayerDescriptor {
|
||||
public fun <init> (Ljava/util/Set;Ljava/util/Set;)V
|
||||
public final fun component1 ()Ljava/util/Set;
|
||||
public final fun component2 ()Ljava/util/Set;
|
||||
public final fun copy (Ljava/util/Set;Ljava/util/Set;)Lfleet/dock/api/ShipLayerDescriptor;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayerDescriptor;Ljava/util/Set;Ljava/util/Set;ILjava/lang/Object;)Lfleet/dock/api/ShipLayerDescriptor;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getModulePath ()Ljava/util/Set;
|
||||
public final fun getModules ()Ljava/util/Set;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipLayerSelector {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipLayerSelector;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipLayerSelector;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipLayerSelector;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getSelector ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipParams {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipParams;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipParams;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipParams;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getConfig ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract class fleet/dock/api/ShipProgressEvent {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Finished : fleet/dock/api/ShipProgressEvent {
|
||||
public static final field INSTANCE Lfleet/dock/api/ShipProgressEvent$Finished;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Progress : fleet/dock/api/ShipProgressEvent {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/Double;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/Double;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun component2 ()Ljava/lang/Double;
|
||||
public final fun copy (Ljava/lang/String;Ljava/lang/Double;)Lfleet/dock/api/ShipProgressEvent$Progress;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipProgressEvent$Progress;Ljava/lang/String;Ljava/lang/Double;ILjava/lang/Object;)Lfleet/dock/api/ShipProgressEvent$Progress;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getFraction ()Ljava/lang/Double;
|
||||
public final fun getMessage ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressEvent$Started : fleet/dock/api/ShipProgressEvent {
|
||||
public static final field INSTANCE Lfleet/dock/api/ShipProgressEvent$Started;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipProgressReporting : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/ShipProgressReporting$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun report (Lfleet/dock/api/ShipId;Lfleet/dock/api/ShipProgressEvent;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressReporting$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipProgressReporting$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/ShipProgressReporting;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/ShipProgressReporting;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/ShipScope {
|
||||
public abstract fun getShips ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun launchShip (Lfleet/dock/api/ShipDescriptor;Lfleet/dock/api/ShipType;Lfleet/dock/api/ShipParams;Lfleet/dock/api/ShipId;)Lfleet/dock/api/ShipHandle;
|
||||
public abstract fun restartShip (Lfleet/dock/api/ShipId;Lfleet/dock/api/ShipDescriptor;)Lfleet/dock/api/ShipHandle;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipSignature {
|
||||
public fun <init> ([B)V
|
||||
public final fun component1 ()[B
|
||||
public final fun copy ([B)Lfleet/dock/api/ShipSignature;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipSignature;[BILjava/lang/Object;)Lfleet/dock/api/ShipSignature;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getBytes ()[B
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipState {
|
||||
public fun <init> (Ljava/util/Map;)V
|
||||
public final fun component1 ()Ljava/util/Map;
|
||||
public final fun copy (Ljava/util/Map;)Lfleet/dock/api/ShipState;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipState;Ljava/util/Map;ILjava/lang/Object;)Lfleet/dock/api/ShipState;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getData ()Ljava/util/Map;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipType {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipType;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipType;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipType;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getType ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ShipVersion {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ShipVersion;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ShipVersion;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ShipVersion;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getVersion ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public abstract interface class fleet/dock/api/SpaceTokensStorage : kotlin/coroutines/CoroutineContext$Element {
|
||||
public static final field Companion Lfleet/dock/api/SpaceTokensStorage$Companion;
|
||||
public fun getKey ()Lkotlin/coroutines/CoroutineContext$Key;
|
||||
public abstract fun getSpaceToken (Ljava/lang/String;)Ljava/lang/String;
|
||||
public abstract fun getTokens ()Lkotlinx/coroutines/flow/StateFlow;
|
||||
public abstract fun putSpaceToken (Ljava/lang/String;Ljava/lang/String;)V
|
||||
public abstract fun removeSpaceToken (Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SpaceTokensStorage$Companion : kotlin/coroutines/CoroutineContext$Key {
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/SpaceTokensStorage$DefaultImpls {
|
||||
public static fun fold (Lfleet/dock/api/SpaceTokensStorage;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
|
||||
public static fun get (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
|
||||
public static fun minusKey (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
|
||||
public static fun plus (Lfleet/dock/api/SpaceTokensStorage;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
|
||||
}
|
||||
|
||||
public final class fleet/dock/api/ThemeId {
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
public final fun component1 ()Ljava/lang/String;
|
||||
public final fun copy (Ljava/lang/String;)Lfleet/dock/api/ThemeId;
|
||||
public static synthetic fun copy$default (Lfleet/dock/api/ThemeId;Ljava/lang/String;ILjava/lang/Object;)Lfleet/dock/api/ThemeId;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getIdent ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,533 @@
|
||||
package fleet.buildtool.fs
|
||||
|
||||
import org.apache.commons.compress.archivers.ArchiveEntry
|
||||
import org.apache.commons.compress.archivers.ArchiveOutputStream
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveEntry
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream
|
||||
import org.apache.commons.compress.archivers.tar.TarConstants.LF_SYMLINK
|
||||
import org.apache.commons.compress.archivers.zip.UnixStat
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
|
||||
import org.apache.commons.compress.archivers.zip.ZipFile
|
||||
import org.apache.commons.compress.compressors.CompressorStreamFactory
|
||||
import org.apache.commons.compress.compressors.xz.XZCompressorInputStream
|
||||
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream
|
||||
import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream
|
||||
import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream
|
||||
import org.slf4j.Logger
|
||||
import java.io.InputStream
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.LinkOption
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.attribute.PosixFileAttributeView
|
||||
import java.nio.file.attribute.PosixFilePermission
|
||||
import java.util.zip.*
|
||||
import kotlin.io.path.*
|
||||
import kotlin.io.path.exists
|
||||
import kotlin.io.path.outputStream
|
||||
import kotlin.io.path.pathString
|
||||
|
||||
/**
|
||||
* Like [org.gradle.kotlin.dsl.support.zipTo] but reproducible
|
||||
*/
|
||||
fun zip(targetZipFile: Path, directory: Path, withTopLevelFolder: Boolean) {
|
||||
val filesToZip = directory.toFile()
|
||||
.walkTopDown()
|
||||
.filter { it.isFile }
|
||||
.map { file ->
|
||||
val relativePath = when (withTopLevelFolder) {
|
||||
true -> file.toPath().relativeTo(directory.parent)
|
||||
false -> file.toPath().relativeTo(directory)
|
||||
}.invariantSeparatorsPathString // reproducible ZIP entry names regardless of the platform
|
||||
relativePath to file.inputStream()
|
||||
}
|
||||
zip(targetZipFile, filesToZip)
|
||||
}
|
||||
|
||||
fun zip(targetZipFile: Path, filesToZip: Sequence<Pair<String, InputStream>>) {
|
||||
ZipOutputStream(targetZipFile.outputStream()).use { zipOut ->
|
||||
filesToZip
|
||||
.sortedBy { (path, _) -> path } // reproducibile order of file in the archive
|
||||
.forEach { (path, content) ->
|
||||
zipOut.putNextEntry(ZipEntry(path).apply {
|
||||
time = 0 // reproducible timestamp
|
||||
})
|
||||
content.use { it.copyTo(zipOut) }
|
||||
zipOut.closeEntry()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun gz(targetGzFile: Path, fileToPack: Path) {
|
||||
fileToPack.inputStream().use { content ->
|
||||
GZIPOutputStream(targetGzFile.outputStream()).use { gzOut ->
|
||||
content.copyTo(gzOut)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts a ZIP archive to a specified output path. Output files will preserve symlinks and file permissions from an archive.
|
||||
*
|
||||
* Warning: to preserve necessary meta-data, we use [ZipFile] instead of [ZipInputStream] or [ZipArchiveInputStream],
|
||||
* due to limitations of latter ([source](https://stackoverflow.com/questions/20220256/unzip-symlinks-from-a-ziparchiveinputstream-on-android)).
|
||||
* This might result in performance drawbacks. Also, it's not recommended to use this method to extract large archives.
|
||||
* Please use it with caution.
|
||||
*/
|
||||
fun extractZip(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
) = extract(archive, destination, stripTopLevelFolder, cleanDestination, ArchiveType.ZIP, "", temporaryDir, logger)
|
||||
|
||||
/**
|
||||
* Extracts a single file from a ZIP archive to a specified output path. The method assumes
|
||||
* that the ZIP archive contains a single file and will log an error if directories or multiple
|
||||
* files do not match the specified criteria.
|
||||
*
|
||||
* @param archive the path to the ZIP archive to be extracted
|
||||
* @param outputFile the path where the extracted file will be written
|
||||
* @param logger the logger instance used to log messages during the extraction process
|
||||
* @param fileMatcher a predicate used to match the specific file to be extracted
|
||||
*/
|
||||
fun extractSingleFileZip(archive: Path, outputFile: Path, logger: Logger, fileMatcher: (ZipEntry) -> Boolean) {
|
||||
logger.info("Extracting '$archive' to '$outputFile'")
|
||||
// Ensure destination directory exists
|
||||
if (Files.notExists(outputFile.parent)) {
|
||||
Files.createDirectories(outputFile.parent)
|
||||
}
|
||||
|
||||
ZipInputStream(archive.inputStream()).use { zipInputStream ->
|
||||
var entry = zipInputStream.nextEntry
|
||||
if (entry == null) {
|
||||
error("No entry found in '$archive', while expecting at least a single file")
|
||||
}
|
||||
while (entry != null) {
|
||||
if (entry.isDirectory) {
|
||||
error("Directory found in '$archive', while expecting a plain file archive")
|
||||
}
|
||||
if (fileMatcher(entry)) {
|
||||
outputFile.outputStream().use { output ->
|
||||
zipInputStream.copyTo(output)
|
||||
}
|
||||
zipInputStream.closeEntry()
|
||||
break
|
||||
}
|
||||
|
||||
zipInputStream.closeEntry()
|
||||
entry = zipInputStream.nextEntry
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun extractGz(
|
||||
archive: Path,
|
||||
destinationFile: Path,
|
||||
logger: Logger,
|
||||
) {
|
||||
logger.info("Extracting '$archive' to '$destinationFile'")
|
||||
|
||||
if (destinationFile.parent.notExists()) {
|
||||
destinationFile.parent.createDirectories()
|
||||
}
|
||||
|
||||
GZIPInputStream(archive.inputStream()).use { gzipIn ->
|
||||
destinationFile.outputStream().use { out ->
|
||||
gzipIn.copyTo(out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun extractTarZst(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
) = extractCompressedTar(archive, destination, stripTopLevelFolder, cleanDestination, CompressorStreamFactory.ZSTANDARD, temporaryDir, logger)
|
||||
|
||||
fun extractTarGz(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
encoding: String? = null,
|
||||
) = extractCompressedTar(archive, destination, stripTopLevelFolder, cleanDestination, CompressorStreamFactory.GZIP, temporaryDir, logger, encoding)
|
||||
|
||||
fun extractTarXz(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
encoding: String? = null,
|
||||
) = extractCompressedTar(archive, destination, stripTopLevelFolder, cleanDestination, CompressorStreamFactory.XZ, temporaryDir, logger, encoding)
|
||||
|
||||
|
||||
private fun extractCompressedTar(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
compressorName: String,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
encoding: String? = null,
|
||||
) = extract(archive, destination, stripTopLevelFolder, cleanDestination, ArchiveType.TAR, compressorName, temporaryDir, logger, encoding)
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun extract(
|
||||
archive: Path,
|
||||
destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
cleanDestination: Boolean,
|
||||
archiveType: ArchiveType,
|
||||
compressorName: String,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
encoding: String? = null,
|
||||
) {
|
||||
val tmpFolder = temporaryDir.resolve("${archive.fileName}_extracted")
|
||||
tmpFolder.deleteRecursively()
|
||||
tmpFolder.createDirectories()
|
||||
logger.info("Extracting '$archive' to '$tmpFolder'")
|
||||
|
||||
when (archiveType) {
|
||||
ArchiveType.ZIP -> {
|
||||
ZipFile.builder().setPath(archive).get()
|
||||
.use { zipFile ->
|
||||
zipFile.entries.asSequence().forEach { entry ->
|
||||
extractEntry(
|
||||
entry = entry,
|
||||
destination = destination,
|
||||
stripTopLevelFolder = stripTopLevelFolder,
|
||||
isSymbolicLink = entry.isUnixSymlink,
|
||||
unixMode = entry.unixMode,
|
||||
symLink = zipFile.getUnixSymlink(entry),
|
||||
logger = logger,
|
||||
entryInputStreamProducer = { zipFile.getInputStream(entry).buffered() },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
ArchiveType.TAR ->
|
||||
archive.inputStream().buffered().use { bufferedInputStream ->
|
||||
when (compressorName) {
|
||||
CompressorStreamFactory.ZSTANDARD -> ZstdCompressorInputStream(bufferedInputStream)
|
||||
CompressorStreamFactory.XZ -> XZCompressorInputStream(bufferedInputStream)
|
||||
else -> CompressorStreamFactory().createCompressorInputStream(compressorName, bufferedInputStream)
|
||||
}.use { `in` ->
|
||||
TarArchiveInputStream(`in`, encoding).use { archiveInputStream ->
|
||||
archiveInputStream.extractEntriesTo(stripTopLevelFolder, tmpFolder, logger)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("Extracted '$archive' to '$tmpFolder'")
|
||||
logger.info("Moving '$tmpFolder' to '$destination'")
|
||||
when {
|
||||
cleanDestination -> destination.deleteRecursively()
|
||||
else -> require(!destination.exists() || destination.isDirectory()) { "destination be a directory is it exists" }
|
||||
}
|
||||
destination.parent.createDirectories()
|
||||
tmpFolder.copyToRecursively(destination, followLinks = false, overwrite = cleanDestination)
|
||||
tmpFolder.deleteRecursively()
|
||||
logger.info("Moved '$tmpFolder' to '$destination'")
|
||||
}
|
||||
|
||||
|
||||
private fun TarArchiveInputStream.extractEntriesTo(stripTopLevelFolder: Boolean, destination: Path, logger: Logger) {
|
||||
val archiveInputStream = this
|
||||
var entry = archiveInputStream.nextEntry
|
||||
while (entry != null) {
|
||||
extractEntry(
|
||||
entry = entry,
|
||||
destination = destination,
|
||||
stripTopLevelFolder = stripTopLevelFolder,
|
||||
isSymbolicLink = entry.isSymbolicLink,
|
||||
symLink = entry.linkName,
|
||||
unixMode = entry.mode,
|
||||
logger = logger
|
||||
) { archiveInputStream }
|
||||
entry = archiveInputStream.nextEntry
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts a given archive entry to a specified destination path, applying optional transformations
|
||||
* such as stripping the top-level folder, handling symbolic links, and transferring file permissions.
|
||||
*/
|
||||
private fun extractEntry(
|
||||
entry: ArchiveEntry, destination: Path,
|
||||
stripTopLevelFolder: Boolean,
|
||||
isSymbolicLink: Boolean,
|
||||
symLink: String?,
|
||||
unixMode: Int,
|
||||
logger: Logger,
|
||||
entryInputStreamProducer: () -> InputStream,
|
||||
) {
|
||||
val relative = when {
|
||||
stripTopLevelFolder -> entry.name.split("/").drop(1).joinToString("/")
|
||||
else -> entry.name
|
||||
}
|
||||
if (relative != "") {
|
||||
val destinationFile = destination.resolve(relative).normalize()
|
||||
val parent = destinationFile.parent
|
||||
val realParent = when {
|
||||
parent.exists(LinkOption.NOFOLLOW_LINKS) && parent.isSymbolicLink() -> parent.parent.resolve(parent.readSymbolicLink())
|
||||
else -> parent
|
||||
}
|
||||
realParent.createDirectories()
|
||||
|
||||
when {
|
||||
entry.isDirectory -> if (!destinationFile.exists()) {
|
||||
destinationFile.createDirectories()
|
||||
}
|
||||
isSymbolicLink -> {
|
||||
requireNotNull(symLink) { "symLink must not be null when isSymbolicLink is true" }
|
||||
destinationFile.createSymbolicLinkPointingTo(Path.of(symLink))
|
||||
}
|
||||
else -> destinationFile.outputStream().use { fileOut ->
|
||||
entryInputStreamProducer().copyTo(fileOut)
|
||||
}
|
||||
}
|
||||
|
||||
restorePermissions(destinationFile, unixMode, isSymbolicLink, logger)
|
||||
}
|
||||
}
|
||||
|
||||
private fun restorePermissions(destinationFile: Path, unixMode: Int, isSymbolicLink: Boolean, logger: Logger) {
|
||||
when {
|
||||
isSymbolicLink -> {}
|
||||
unixMode == 0 -> {}
|
||||
else -> try {
|
||||
val attr = destinationFile.fileAttributesView<PosixFileAttributeView>(LinkOption.NOFOLLOW_LINKS)
|
||||
attr.setPermissions(unixMode.toPosixPermissions())
|
||||
}
|
||||
catch (_: UnsupportedOperationException) {
|
||||
logger.debug("Could not restore permissions on {}, file system is not POSIX compliant", destinationFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Compresses a given [source] folder to an [outputFile] in ZIP format.
|
||||
*
|
||||
* TODO: Make it reproducible by using the methods from `zip(Path, Path, Boolean)` method (Make it optional, not to break backwards compatibility):
|
||||
* 1. Sort entries alphabetically
|
||||
* 2. Use invariant separators
|
||||
* 3. Reset lastModified to 0
|
||||
*/
|
||||
fun zip(
|
||||
source: Path,
|
||||
outputFile: Path,
|
||||
withTopLevelFolder: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
) = compress(source, outputFile, withTopLevelFolder, ArchiveType.ZIP, compressorName = "", temporaryDir, logger)
|
||||
|
||||
fun tarGz(
|
||||
source: Path,
|
||||
outputFile: Path,
|
||||
withTopLevelFolder: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
) = tarWithCompression(source, outputFile, withTopLevelFolder, CompressorStreamFactory.GZIP, temporaryDir, logger)
|
||||
|
||||
fun tarZst(
|
||||
source: Path,
|
||||
outputFile: Path,
|
||||
withTopLevelFolder: Boolean,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
) = tarWithCompression(source, outputFile, withTopLevelFolder, CompressorStreamFactory.ZSTANDARD, temporaryDir, logger)
|
||||
|
||||
private fun tarWithCompression(
|
||||
source: Path,
|
||||
outputFile: Path,
|
||||
withTopLevelFolder: Boolean,
|
||||
compressorName: String,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
): Path = compress(source, outputFile, withTopLevelFolder, ArchiveType.TAR, compressorName, temporaryDir, logger)
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
private fun compress(
|
||||
source: Path,
|
||||
outputFile: Path,
|
||||
withTopLevelFolder: Boolean,
|
||||
archiveType: ArchiveType,
|
||||
compressorName: String,
|
||||
temporaryDir: Path,
|
||||
logger: Logger,
|
||||
): Path {
|
||||
val tmpArchive = temporaryDir.resolve("tmp_${outputFile.fileName}")
|
||||
tmpArchive.deleteRecursively()
|
||||
if (temporaryDir.notExists()) {
|
||||
temporaryDir.createDirectories()
|
||||
}
|
||||
|
||||
logger.info("Compressing '$source' to '$tmpArchive'...")
|
||||
tmpArchive.outputStream().buffered().use { bufferedOutputStream ->
|
||||
val compressorStream = when (archiveType) {
|
||||
ArchiveType.ZIP -> bufferedOutputStream // zip uses the default compression method, no need to wrap it
|
||||
ArchiveType.TAR -> when (compressorName) {
|
||||
CompressorStreamFactory.ZSTANDARD -> ZstdCompressorOutputStream(bufferedOutputStream)
|
||||
CompressorStreamFactory.XZ -> XZCompressorOutputStream(bufferedOutputStream)
|
||||
else -> CompressorStreamFactory().createCompressorOutputStream(compressorName, bufferedOutputStream)
|
||||
}
|
||||
}
|
||||
|
||||
compressorStream.use { out ->
|
||||
val archiveStream = when (archiveType) {
|
||||
ArchiveType.ZIP -> ZipArchiveOutputStream(out)
|
||||
ArchiveType.TAR -> TarArchiveOutputStream(out).apply { setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU) }
|
||||
} as ArchiveOutputStream<ArchiveEntry>
|
||||
|
||||
archiveStream.use { outputStream ->
|
||||
when {
|
||||
source.isDirectory() -> {
|
||||
val base = when {
|
||||
withTopLevelFolder -> {
|
||||
outputStream.addEntry(source, source.name, archiveType)
|
||||
"${source.name}/"
|
||||
}
|
||||
|
||||
else -> "./"
|
||||
}
|
||||
|
||||
source.walk().forEach { // must not follow symlinks
|
||||
outputStream.addEntry(it, "$base${it.relativeTo(source)}", archiveType)
|
||||
}
|
||||
}
|
||||
|
||||
else -> outputStream.addEntry(source, source.name, archiveType = archiveType)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("Compressed '$source' to '$tmpArchive'")
|
||||
logger.info("Moving '$tmpArchive' to '$outputFile'")
|
||||
outputFile.deleteRecursively()
|
||||
outputFile.parent.createDirectories()
|
||||
tmpArchive.moveTo(outputFile)
|
||||
logger.info("Moved '$tmpArchive' to '$outputFile'")
|
||||
return outputFile
|
||||
}
|
||||
|
||||
private fun ArchiveOutputStream<ArchiveEntry>.addEntry(path: Path, relativePathInArchive: String, archiveType: ArchiveType) {
|
||||
when {
|
||||
path.isSymbolicLink() -> {
|
||||
when (archiveType) {
|
||||
ArchiveType.TAR -> {
|
||||
val entry = TarArchiveEntry(relativePathInArchive, LF_SYMLINK).also {
|
||||
it.linkName = path.readSymbolicLink().pathString
|
||||
when (val permissions = path.getFilePermissions(LinkOption.NOFOLLOW_LINKS)) {
|
||||
FilePermissions.Other -> {}
|
||||
is FilePermissions.Posix -> it.mode = permissions.toInt()
|
||||
}
|
||||
}
|
||||
putArchiveEntry(entry)
|
||||
closeArchiveEntry()
|
||||
}
|
||||
ArchiveType.ZIP -> {
|
||||
val link = path.readSymbolicLink().pathString
|
||||
val entry = ZipArchiveEntry(relativePathInArchive).also {
|
||||
when (val permissions = path.getFilePermissions(LinkOption.NOFOLLOW_LINKS)) {
|
||||
FilePermissions.Other -> {}
|
||||
is FilePermissions.Posix -> it.unixMode = UnixStat.LINK_FLAG or permissions.toInt()
|
||||
}
|
||||
it.size = link.toByteArray().size.toLong()
|
||||
}
|
||||
putArchiveEntry(entry)
|
||||
write(link.toByteArray())
|
||||
closeArchiveEntry()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
path.isDirectory() -> {} // this must be checked AFTER `path.isSymbolicLink()`, otherwise symlink pointing to directory will be ignored
|
||||
|
||||
else -> path.inputStream().use { fileIn ->
|
||||
val entry: ArchiveEntry = when (archiveType) {
|
||||
ArchiveType.TAR -> TarArchiveEntry(path, relativePathInArchive).also {
|
||||
when (val permissions = path.getFilePermissions()) {
|
||||
FilePermissions.Other -> {}
|
||||
is FilePermissions.Posix -> it.mode = permissions.toInt()
|
||||
}
|
||||
}
|
||||
ArchiveType.ZIP -> ZipArchiveEntry(path, relativePathInArchive).also {
|
||||
when (val permissions = path.getFilePermissions()) {
|
||||
FilePermissions.Other -> {}
|
||||
is FilePermissions.Posix -> it.unixMode = permissions.toInt()
|
||||
}
|
||||
}
|
||||
}
|
||||
putArchiveEntry(entry)
|
||||
fileIn.copyTo(this)
|
||||
closeArchiveEntry()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun Path.getFilePermissions(vararg options: LinkOption): FilePermissions {
|
||||
return try {
|
||||
FilePermissions.Posix(getPosixFilePermissions(*options))
|
||||
}
|
||||
catch (_: UnsupportedOperationException) {
|
||||
FilePermissions.Other
|
||||
}
|
||||
}
|
||||
|
||||
internal fun Int.toPosixPermissions(): Set<PosixFilePermission> {
|
||||
val perms = mutableSetOf<PosixFilePermission>()
|
||||
if (this and 0b100000000 != 0) perms.add(PosixFilePermission.OWNER_READ)
|
||||
if (this and 0b010000000 != 0) perms.add(PosixFilePermission.OWNER_WRITE)
|
||||
if (this and 0b001000000 != 0) perms.add(PosixFilePermission.OWNER_EXECUTE)
|
||||
if (this and 0b000100000 != 0) perms.add(PosixFilePermission.GROUP_READ)
|
||||
if (this and 0b000010000 != 0) perms.add(PosixFilePermission.GROUP_WRITE)
|
||||
if (this and 0b000001000 != 0) perms.add(PosixFilePermission.GROUP_EXECUTE)
|
||||
if (this and 0b000000100 != 0) perms.add(PosixFilePermission.OTHERS_READ)
|
||||
if (this and 0b000000010 != 0) perms.add(PosixFilePermission.OTHERS_WRITE)
|
||||
if (this and 0b000000001 != 0) perms.add(PosixFilePermission.OTHERS_EXECUTE)
|
||||
return perms
|
||||
}
|
||||
|
||||
internal fun Set<PosixFilePermission>.toInt(): Int =
|
||||
map { permission ->
|
||||
when (permission) {
|
||||
PosixFilePermission.OWNER_READ -> 0b100000000
|
||||
PosixFilePermission.OWNER_WRITE -> 0b010000000
|
||||
PosixFilePermission.OWNER_EXECUTE -> 0b001000000
|
||||
PosixFilePermission.GROUP_READ -> 0b000100000
|
||||
PosixFilePermission.GROUP_WRITE -> 0b000010000
|
||||
PosixFilePermission.GROUP_EXECUTE -> 0b000001000
|
||||
PosixFilePermission.OTHERS_READ -> 0b000000100
|
||||
PosixFilePermission.OTHERS_WRITE -> 0b000000010
|
||||
PosixFilePermission.OTHERS_EXECUTE -> 0b000000001
|
||||
}
|
||||
}.sum()
|
||||
|
||||
private sealed class FilePermissions {
|
||||
object Other : FilePermissions()
|
||||
data class Posix(val permissions: Set<PosixFilePermission>) : FilePermissions() {
|
||||
|
||||
fun toInt() = permissions.toInt()
|
||||
}
|
||||
}
|
||||
|
||||
private enum class ArchiveType {
|
||||
ZIP,
|
||||
TAR,
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package fleet.buildtool.fs
|
||||
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.nio.ByteBuffer
|
||||
import java.nio.charset.Charset
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.attribute.PosixFilePermission
|
||||
import java.security.MessageDigest
|
||||
import kotlin.io.path.getPosixFilePermissions
|
||||
import kotlin.io.path.readText
|
||||
import kotlin.io.path.setPosixFilePermissions
|
||||
|
||||
val Path.pathString: String get() = toString()
|
||||
|
||||
fun sha256(bytes: ByteArray): String {
|
||||
val md = MessageDigest.getInstance("SHA-256")
|
||||
val digest = md.digest(bytes)
|
||||
return digest.fold(StringBuilder()) { sb, it -> sb.append("%02x".format(it)) }.toString()
|
||||
}
|
||||
|
||||
/**
|
||||
* Read content of file at [this] path and normalize it for reliable cross-platform SHA256 hashing
|
||||
*
|
||||
* Line endings will be normalized to '\n' to ensure the hash result produces identical result on Windows and UNIX.
|
||||
*/
|
||||
fun Path.readBytesForSha256(charset: Charset = Charsets.UTF_8): ByteArray = readText(charset).normaliseLineSeparators().toByteArray(charset)
|
||||
|
||||
private fun String.normaliseLineSeparators() = lineSequence().joinToString("\n")
|
||||
|
||||
/**
|
||||
* Set POSIX file permissions of this [Path] to ensure the output is the same on all platforms.
|
||||
*
|
||||
* After zip extraction, execute permissions are lost on Windows which creates a different directory output.
|
||||
*
|
||||
* @this [Path] an extracted path from a ZIP archive, which extraction is intended to be done on all platforms reproducibly.
|
||||
*/
|
||||
fun Path.makeReproducibleAfterCrossOSExtraction() {
|
||||
try {
|
||||
val originalPermissions = getPosixFilePermissions()
|
||||
val newPermissions = originalPermissions.minus(setOf(PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_EXECUTE))
|
||||
setPosixFilePermissions(newPermissions)
|
||||
} catch (_: UnsupportedOperationException) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inefficiently normalize '\r\n' and '\r' to '\n'.
|
||||
*/
|
||||
fun ByteBuffer.normaliseLineSeparators(): ByteBuffer =
|
||||
ByteBuffer.wrap(ByteArray(remaining()).also { get(it) }.normaliseLineSeparators())
|
||||
|
||||
private fun ByteArray.normaliseLineSeparators(): ByteArray {
|
||||
val result = ByteArrayOutputStream(size)
|
||||
var i = 0
|
||||
while (i < size) {
|
||||
when {
|
||||
i + 1 < size && this[i] == '\r'.code.toByte() && this[i + 1] == '\n'.code.toByte() -> {}
|
||||
this[i] == '\r'.code.toByte() -> result.write('\n'.code)
|
||||
else -> result.write(this[i].toInt())
|
||||
}
|
||||
i++
|
||||
}
|
||||
return result.toByteArray()
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,48 @@
|
||||
package fleet.buildtool.fs
|
||||
|
||||
import java.io.File
|
||||
import java.nio.ByteBuffer
|
||||
import kotlin.io.path.readBytes
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertContentEquals
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class UtilsTest {
|
||||
@Test
|
||||
fun `sha256 should not be modified as it will break dockApiVersion generation`() {
|
||||
assertEquals(
|
||||
"3202d841030f0606d93ea9e89aa06261a784615c961c94bfd92286d30538e8c8",
|
||||
sha256(resourceAsFile("/example-abi-lf.txt").toPath().readBytesForSha256())
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `sha256 should be agnostic of line endings`() {
|
||||
val expectedHash = "3202d841030f0606d93ea9e89aa06261a784615c961c94bfd92286d30538e8c8"
|
||||
assertEquals(expectedHash, sha256(resourceAsFile("/example-abi-lf.txt").toPath().readBytesForSha256()), "LF line ending file must produce correct hash")
|
||||
assertEquals(expectedHash, sha256(resourceAsFile("/example-abi-crlf.txt").toPath().readBytesForSha256()), "CRLF line ending file must produce correct hash")
|
||||
assertEquals(expectedHash, sha256(resourceAsFile("/example-abi-cr.txt").toPath().readBytesForSha256()), "CR line ending file must produce correct hash")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should have no action on LF`() {
|
||||
val lfFile = resourceAsFile("/example-abi-lf.txt").toPath().readBytes()
|
||||
assertContentEquals(lfFile, ByteBuffer.wrap(lfFile).normaliseLineSeparators().array(), "should not have modified the content")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should normalize CRLF`() {
|
||||
val lfFile = resourceAsFile("/example-abi-lf.txt").toPath().readBytes()
|
||||
assertContentEquals(lfFile, ByteBuffer.wrap(resourceAsFile("/example-abi-crlf.txt").toPath().readBytes()).normaliseLineSeparators().array(), "should not contain LF")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should normalize CR `() {
|
||||
val lfFile = resourceAsFile("/example-abi-lf.txt").toPath().readBytes()
|
||||
assertContentEquals(lfFile, ByteBuffer.wrap(resourceAsFile("/example-abi-cr.txt").toPath().readBytes()).normaliseLineSeparators().array(), "should not contain CR")
|
||||
}
|
||||
}
|
||||
|
||||
private fun resourceAsFile(filename: String) = object {}.javaClass.getResource(filename)?.let { File(it.toURI()) } ?: error(
|
||||
"could not find test resource $filename"
|
||||
)
|
||||
@@ -0,0 +1,69 @@
|
||||
### auto-generated section `build fleet.build.http` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_http",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "http",
|
||||
module_name = "fleet.build.http",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_http",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"//fleet/ktor/client/core",
|
||||
"//fleet/build/fs",
|
||||
"@lib//:fleet-io-ktor-client-logging",
|
||||
"@lib//:slf4j-api",
|
||||
"@lib//:fleet-io-ktor-client-mock",
|
||||
],
|
||||
exports = [
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"//fleet/ktor/client/core",
|
||||
]
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "http_test_lib",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmTest/**/*.kt", "srcJvmTest/**/*.java", "srcJvmTest/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_http",
|
||||
associates = [":http"],
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"//fleet/ktor/client/core",
|
||||
"//fleet/build/fs",
|
||||
"//fleet/build/fs:fs_test_lib",
|
||||
"@lib//:fleet-io-ktor-client-logging",
|
||||
"@lib//:slf4j-api",
|
||||
"//fleet/junit4",
|
||||
"@lib//:kotlin-test",
|
||||
"@lib//:fleet-io-ktor-client-mock",
|
||||
],
|
||||
exports = [
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"//fleet/ktor/client/core",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.http` end
|
||||
|
||||
### auto-generated section `test fleet.build.http` start
|
||||
load("@community//build:tests-options.bzl", "jps_test")
|
||||
|
||||
jps_test(
|
||||
name = "http_test",
|
||||
runtime_deps = [":http_test_lib"]
|
||||
)
|
||||
### auto-generated section `test fleet.build.http` end
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmTest" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" exported="" name="kotlinx-coroutines-core" level="project" />
|
||||
<orderEntry type="module" module-name="fleet.ktor.client.core" exported="" />
|
||||
<orderEntry type="module" module-name="fleet.build.fs" />
|
||||
<orderEntry type="library" name="fleet:io.ktor.client.logging" level="project" />
|
||||
<orderEntry type="library" name="slf4j-api" level="project" />
|
||||
<orderEntry type="module" module-name="fleet.junit4" scope="TEST" />
|
||||
<orderEntry type="library" scope="TEST" name="kotlin-test" level="project" />
|
||||
<orderEntry type="library" name="fleet:io.ktor.client.mock" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,76 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.http"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
api(jps.com.intellij.platform.kotlinx.coroutines.core.jvm134738847.get().let { "${it.group}:kotlinx-coroutines-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.io.ktor.ktor.client.logging.jvm1780199912.get().let { "${it.group}:ktor-client-logging:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.slf4j.slf4j.api2013636515.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
exclude(group = "org.slf4j", module = "slf4j-jdk14")
|
||||
}
|
||||
implementation(jps.io.ktor.ktor.client.mock.jvm121671911.get().let { "${it.group}:ktor-client-mock:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
api(project(":fleet.ktor.client.core"))
|
||||
implementation(project(":fleet.build.fs"))
|
||||
}
|
||||
sourceSets.commonTest.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.test542871666.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
}
|
||||
}
|
||||
sourceSets.jvmTest.dependencies {
|
||||
implementation(project(":fleet.junit4"))
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
package fleet.buildtool.http
|
||||
|
||||
import fleet.buildtool.fs.*
|
||||
import io.ktor.client.*
|
||||
import io.ktor.client.call.*
|
||||
import io.ktor.client.plugins.*
|
||||
import io.ktor.client.plugins.logging.*
|
||||
import io.ktor.client.plugins.logging.Logger as KtorLogger
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.client.statement.*
|
||||
import io.ktor.http.*
|
||||
import io.ktor.utils.io.*
|
||||
import io.ktor.utils.io.jvm.javaio.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.StandardOpenOption
|
||||
import java.time.Duration
|
||||
import org.slf4j.Logger
|
||||
import kotlin.io.path.*
|
||||
|
||||
fun fleetBuildHttpClient(logger: Logger, userAgent: String = "FleetBuildTooling/1.0"): HttpClient = HttpClient {
|
||||
expectSuccess = true
|
||||
followRedirects = true
|
||||
install(HttpTimeout) {
|
||||
requestTimeoutMillis = Duration.ofMinutes(5).toMillis()
|
||||
}
|
||||
install(HttpRequestRetry) {
|
||||
retryOnServerErrors(maxRetries = 10)
|
||||
exponentialDelay()
|
||||
}
|
||||
install(Logging) {
|
||||
this.logger = object : KtorLogger {
|
||||
override fun log(message: String) {
|
||||
logger.info(message)
|
||||
}
|
||||
}
|
||||
level = LogLevel.ALL
|
||||
sanitizeHeader { header -> header == HttpHeaders.Authorization }
|
||||
}
|
||||
defaultRequest {
|
||||
header("User-Agent", userAgent)
|
||||
}
|
||||
}
|
||||
|
||||
fun HttpClient.downloadFileBlocking(url: String, destination: Path, checksumValidation: ChecksumValidation = ChecksumValidation.Disabled, block: HttpRequestBuilder.() -> Unit = {}): Path = runBlocking {
|
||||
downloadFile(url, destination, checksumValidation, block)
|
||||
}
|
||||
|
||||
sealed class ChecksumValidation {
|
||||
/**
|
||||
* Download the file without checking its integrity once on disk.
|
||||
*
|
||||
* Always re-downloads the file, regardless of whether the target file is already present on disk.
|
||||
*/
|
||||
object Disabled : ChecksumValidation()
|
||||
|
||||
/**
|
||||
* Checks integrity of the downloaded file.
|
||||
*
|
||||
* Checks whether the target file is already on disk and matching the provided [expected] hash and if the hash matches the file won't be re-downloaded.
|
||||
*
|
||||
* @param algorithm of the [expected] hash string
|
||||
* @param expected the expected hash of the downloaded file
|
||||
*/
|
||||
data class UsingHash(val algorithm: ChecksumAlgorithm, val expected: String) : ChecksumValidation()
|
||||
|
||||
/**
|
||||
* Checks integrity of the downloaded file by downloading first the file pointed by [url] which should contain the hash of the downloaded
|
||||
* file.
|
||||
*
|
||||
* Checks whether the target file is already on disk and matching the hash contained in the file downloaded from [url] and if the hash
|
||||
* matches the file won't be re-downloaded.
|
||||
*
|
||||
* @param algorithm of the hash present in the file downloaded from [url]
|
||||
* @param url url to a remote checksum file to download
|
||||
*/
|
||||
data class UsingHashDownloadedFile(val algorithm: ChecksumAlgorithm, val url: String) : ChecksumValidation()
|
||||
}
|
||||
|
||||
enum class ChecksumAlgorithm {
|
||||
SHA256,
|
||||
}
|
||||
|
||||
suspend fun HttpClient.downloadFile(url: String, destination: Path, checksumValidation: ChecksumValidation, block: HttpRequestBuilder.() -> Unit = {}): Path {
|
||||
return when (val hashResult = checkIfAlreadyDownloaded(destination, checksumValidation)) {
|
||||
is HashResult.AlreadyDownloaded -> destination
|
||||
HashResult.NotDownloaded, is HashResult.HashMismatched -> {
|
||||
config {
|
||||
install(Logging) {
|
||||
level = LogLevel.HEADERS // a bug in Ktor Logging plugin leads to OOM if downloaded file is too big
|
||||
}
|
||||
}.prepareGet(url) {
|
||||
expectSuccess = false
|
||||
block()
|
||||
}.execute { response ->
|
||||
if (!response.status.isSuccess()) {
|
||||
withContext(Dispatchers.IO) { Files.deleteIfExists(destination) }
|
||||
error("failed to download $url: ${response.status} ${response.bodyAsText()}")
|
||||
}
|
||||
|
||||
val channel: ByteReadChannel = response.body()
|
||||
withContext(Dispatchers.IO) {
|
||||
destination.parent.createDirectories()
|
||||
destination.outputStream(StandardOpenOption.CREATE).buffered().use { fos ->
|
||||
channel.copyTo(fos)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
when (checksumValidation) {
|
||||
ChecksumValidation.Disabled -> destination // no integrity validation
|
||||
is ChecksumValidation.UsingHash,
|
||||
is ChecksumValidation.UsingHashDownloadedFile,
|
||||
-> {
|
||||
val expected = when (hashResult) {
|
||||
HashResult.NotDownloaded -> resolveChecksumHash(checksumValidation) ?: error("impossible to get an `null` hash here")
|
||||
is HashResult.HashMismatched -> hashResult.expectedHash // do not re-resolve the expected hash, instead use the result of the previous hash check that happened at checkIfAlreadyDownloaded
|
||||
is HashResult.AlreadyDownloaded -> error("impossible") // would have hit first when branch
|
||||
}
|
||||
val actual = sha256(destination.readBytes())
|
||||
when (expected == actual) {
|
||||
true -> destination
|
||||
else -> error("downloaded file '$destination' failed integrity check, expected=$expected, actual=$actual")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun HttpClient.resolveChecksumHash(checksumValidation: ChecksumValidation): String? = when (checksumValidation) {
|
||||
ChecksumValidation.Disabled -> null
|
||||
is ChecksumValidation.UsingHashDownloadedFile -> {
|
||||
require(checksumValidation.algorithm == ChecksumAlgorithm.SHA256) { "Only SHA-256 algorithm is supported for now" }
|
||||
val tmp = createTempFile(prefix = "hash", suffix = ".sha256")
|
||||
val hashFile = downloadFile(checksumValidation.url, tmp, ChecksumValidation.Disabled)
|
||||
val hash = hashFile.readText().split(" ", limit = 2).first()
|
||||
tmp.deleteIfExists()
|
||||
hash
|
||||
}
|
||||
is ChecksumValidation.UsingHash -> {
|
||||
require(checksumValidation.algorithm == ChecksumAlgorithm.SHA256) { "Only SHA-256 algorithm is supported for now" }
|
||||
checksumValidation.expected
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun HttpClient.checkIfAlreadyDownloaded(destination: Path, checksumValidation: ChecksumValidation): HashResult = when (destination.exists()) {
|
||||
false -> HashResult.NotDownloaded
|
||||
true -> when (checksumValidation) {
|
||||
ChecksumValidation.Disabled -> {
|
||||
destination.deleteIfExists()
|
||||
HashResult.NotDownloaded
|
||||
}
|
||||
is ChecksumValidation.UsingHashDownloadedFile,
|
||||
is ChecksumValidation.UsingHash,
|
||||
-> {
|
||||
val expected = resolveChecksumHash(checksumValidation) ?: error("impossible to get an `null` hash here")
|
||||
val actual = sha256(destination.readBytes())
|
||||
when (expected == actual) {
|
||||
true -> HashResult.AlreadyDownloaded(hash = actual)
|
||||
else -> {
|
||||
withContext(Dispatchers.IO) { destination.deleteIfExists() }
|
||||
HashResult.HashMismatched(expectedHash = expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class HashResult {
|
||||
data class AlreadyDownloaded(val hash: String) : HashResult()
|
||||
object NotDownloaded : HashResult()
|
||||
data class HashMismatched(val expectedHash: String) : HashResult()
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
package fleet.buildtool.http
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.mock.MockEngine
|
||||
import io.ktor.client.engine.mock.respond
|
||||
import io.ktor.http.HttpHeaders
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.http.headersOf
|
||||
import io.ktor.utils.io.ByteReadChannel
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import kotlin.io.path.*
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFailsWith
|
||||
|
||||
class HttpClientTests {
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
@Test
|
||||
fun `should always download file when checksum validation is disabled`() {
|
||||
val resourceUrl = "https://example.com/some-resource.txt"
|
||||
val requestCounter = mapOf(
|
||||
resourceUrl to AtomicInteger(0),
|
||||
)
|
||||
|
||||
val mockEngine = MockEngine { request ->
|
||||
requestCounter.getValue(request.url.toString()).incrementAndGet()
|
||||
respond(content = ByteReadChannel("sometestdata"), status = HttpStatusCode.OK, headers = headersOf(HttpHeaders.ContentType, "application/txt"))
|
||||
}
|
||||
|
||||
val httpClient = HttpClient(mockEngine) {}
|
||||
val destination = createTempDirectory().resolve("some-resource.txt")
|
||||
destination.parent.createDirectories()
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.deleteIfExists()
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.Disabled)
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("some other data but that will be overridden anyway")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.Disabled)
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("sometestdata")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.Disabled)
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file despite it already existing and matching checksum, because checksum validation is disabled")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
destination.parent.deleteRecursively()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
@Test
|
||||
fun `should not re-downloaded file if already on disk and matching the hash resolve by URL`() {
|
||||
val resourceUrl = "https://example.com/some-resource.txt"
|
||||
val resourceUrlSha = "$resourceUrl.sha256"
|
||||
val requestCounter = mapOf(
|
||||
resourceUrl to AtomicInteger(0),
|
||||
resourceUrlSha to AtomicInteger(0),
|
||||
)
|
||||
|
||||
val mockEngine = MockEngine { request ->
|
||||
requestCounter.getValue(request.url.toString()).incrementAndGet()
|
||||
when (request.url.toString()) {
|
||||
resourceUrl -> respond(content = ByteReadChannel("sometestdata"), status = HttpStatusCode.OK, headers = headersOf(HttpHeaders.ContentType, "application/txt"))
|
||||
resourceUrlSha -> respond(content = ByteReadChannel("10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486 *some-resource.txt"), status = HttpStatusCode.OK, headers = headersOf(HttpHeaders.ContentType, "application/txt"))
|
||||
else -> error("unexpected request")
|
||||
}
|
||||
}
|
||||
|
||||
val httpClient = HttpClient(mockEngine) {}
|
||||
val destination = createTempDirectory().resolve("some-resource.txt")
|
||||
destination.parent.createDirectories()
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
requestCounter.getValue(resourceUrlSha).set(0)
|
||||
destination.deleteIfExists()
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHashDownloadedFile(ChecksumAlgorithm.SHA256, resourceUrlSha))
|
||||
assertEquals(1, requestCounter.getValue(resourceUrlSha).get(), "should have tried to download the checksum file once for integrity check")
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file because it did not exist")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
requestCounter.getValue(resourceUrlSha).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("some other data but that will be overridden anyway")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHashDownloadedFile(ChecksumAlgorithm.SHA256, resourceUrlSha))
|
||||
assertEquals(1, requestCounter.getValue(resourceUrlSha).get(), "should have tried to download the checksum file once for integrity check, but not twice because it re-used the first download of the checksum file")
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file because it existed but did not matched checksum")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
requestCounter.getValue(resourceUrlSha).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("sometestdata")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHashDownloadedFile(ChecksumAlgorithm.SHA256, resourceUrlSha))
|
||||
assertEquals(1, requestCounter.getValue(resourceUrlSha).get(), "should have tried to download the checksum file once for integrity check, but not twice because it re-used the first download of the checksum file")
|
||||
assertEquals(0, requestCounter.getValue(resourceUrl).get(), "should not have tried to download the file because it exists and matched checksum")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
destination.parent.deleteRecursively()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
@Test
|
||||
fun `should not re-downloaded file if already on disk and matching the raw hash`() {
|
||||
val resourceUrl = "https://example.com/some-resource.txt"
|
||||
val requestCounter = mapOf(
|
||||
resourceUrl to AtomicInteger(0),
|
||||
)
|
||||
|
||||
val mockEngine = MockEngine { request ->
|
||||
requestCounter.getValue(request.url.toString()).incrementAndGet()
|
||||
when (request.url.toString()) {
|
||||
resourceUrl -> respond(content = ByteReadChannel("sometestdata"), status = HttpStatusCode.OK, headers = headersOf(HttpHeaders.ContentType, "application/txt"))
|
||||
else -> error("unexpected request")
|
||||
}
|
||||
}
|
||||
|
||||
val httpClient = HttpClient(mockEngine) {}
|
||||
val destination = createTempDirectory().resolve("some-resource.txt")
|
||||
destination.parent.createDirectories()
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.deleteIfExists()
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHash(ChecksumAlgorithm.SHA256, "10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486"))
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file because it did not exist")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("some other data but that will be overridden anyway")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHash(ChecksumAlgorithm.SHA256, "10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486"))
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file because it existed but did not matched checksum")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.parent.createDirectories()
|
||||
destination.writeText("sometestdata")
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHash(ChecksumAlgorithm.SHA256, "10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486"))
|
||||
assertEquals(0, requestCounter.getValue(resourceUrl).get(), "should not have tried to download the file because it exists and matched checksum")
|
||||
assertEquals("sometestdata", destination.readText())
|
||||
|
||||
destination.parent.deleteRecursively()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalPathApi::class)
|
||||
@Test
|
||||
fun `should fail when server returned a file not matching checksum`() {
|
||||
val resourceUrl = "https://example.com/some-resource.txt"
|
||||
val requestCounter = mapOf(
|
||||
resourceUrl to AtomicInteger(0),
|
||||
)
|
||||
|
||||
val mockEngine = MockEngine { request ->
|
||||
requestCounter.getValue(request.url.toString()).incrementAndGet()
|
||||
when (request.url.toString()) {
|
||||
resourceUrl -> respond(content = ByteReadChannel("sometestdataDJFBSIDFUBSDIFUSDBFIUDB"), status = HttpStatusCode.OK, headers = headersOf(HttpHeaders.ContentType, "application/txt"))
|
||||
else -> error("unexpected request")
|
||||
}
|
||||
}
|
||||
|
||||
val httpClient = HttpClient(mockEngine) {}
|
||||
val destination = createTempDirectory().resolve("some-resource.txt")
|
||||
destination.parent.createDirectories()
|
||||
|
||||
requestCounter.getValue(resourceUrl).set(0)
|
||||
destination.deleteIfExists()
|
||||
val exception = assertFailsWith<IllegalStateException> {
|
||||
httpClient.downloadFileBlocking(resourceUrl, destination, ChecksumValidation.UsingHash(ChecksumAlgorithm.SHA256, "10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486"))
|
||||
}
|
||||
assertEquals("downloaded file '$destination' failed integrity check, expected=10ba28f2395f43928e1fcc3dd482dc2f1b6a9cef7334d1afda11369f2a1a5486, actual=5d2080c90b2d11ff9f17adb960c0f579931d94311e2c47cf5c2d97de4865d4f0", exception.message)
|
||||
assertEquals(1, requestCounter.getValue(resourceUrl).get(), "should have tried to download the file because it did not exist")
|
||||
assertEquals("sometestdataDJFBSIDFUBSDIFUSDBFIUDB", destination.readText())
|
||||
|
||||
destination.parent.deleteRecursively()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
### auto-generated section `build fleet.build.license` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_license",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "license",
|
||||
module_name = "fleet.build.license",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcCommonMain/**/*.kt", "srcCommonMain/**/*.java", "srcCommonMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_license",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-serialization-core",
|
||||
"@lib//:kotlinx-serialization-json",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.license` end
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
<arrayArguments>
|
||||
<arrayArg name="pluginClasspaths">
|
||||
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
|
||||
</arrayArg>
|
||||
<arrayArg name="pluginOptions" />
|
||||
</arrayArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcCommonMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,59 @@
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
alias(jps.plugins.kotlin.serialization)
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.license"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.core.jvm1739247612.get().let { "${it.group}:kotlinx-serialization-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.json.jvm231489733.get().let { "${it.group}:kotlinx-serialization-json:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package fleet.buildtool.license
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
fun thirdPartyLicenseFilename(
|
||||
productName: String,
|
||||
version: String,
|
||||
extension: String,
|
||||
): String = "$productName-$version-third-party-libraries${extension}"
|
||||
|
||||
@Serializable
|
||||
data class JetbrainsLicenceEntry(
|
||||
val name: String,
|
||||
val version: String?,
|
||||
val url: String,
|
||||
val license: String?,
|
||||
val licenseUrl: String?,
|
||||
)
|
||||
@@ -0,0 +1,29 @@
|
||||
### auto-generated section `build fleet.build.platform` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_platform",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "platform",
|
||||
module_name = "fleet.build.platform",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_platform",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:kotlinx-serialization-core",
|
||||
"@lib//:kotlinx-serialization-json",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.platform` end
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
<arrayArguments>
|
||||
<arrayArg name="pluginClasspaths">
|
||||
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
|
||||
</arrayArg>
|
||||
<arrayArg name="pluginOptions" />
|
||||
</arrayArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,63 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
alias(jps.plugins.kotlin.serialization)
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.platform"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.core.jvm1739247612.get().let { "${it.group}:kotlinx-serialization-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.org.jetbrains.kotlinx.kotlinx.serialization.json.jvm231489733.get().let { "${it.group}:kotlinx-serialization-json:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.com.intellij.platform.kotlinx.coroutines.core.jvm134738847.get().let { "${it.group}:kotlinx-coroutines-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package fleet.buildtool.platform
|
||||
|
||||
enum class DistributionChannel {
|
||||
EAP, EAPCandidate, Nightly, Unspecified;
|
||||
|
||||
companion object {
|
||||
fun fromString(s: String?): DistributionChannel = when (s) {
|
||||
"nightly" -> Nightly
|
||||
"stable",
|
||||
"eap",
|
||||
-> EAP
|
||||
"eap_candidate" -> EAPCandidate
|
||||
"", null -> Unspecified
|
||||
else -> error("unsupported channel string '$s'")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun DistributionChannel.toMarketplaceChannel(): MarketplaceChannel = when (this) {
|
||||
DistributionChannel.EAP,
|
||||
DistributionChannel.EAPCandidate,
|
||||
-> MarketplaceChannel.Stable
|
||||
DistributionChannel.Nightly -> MarketplaceChannel.Nightly
|
||||
DistributionChannel.Unspecified -> MarketplaceChannel.Nightly // defaults to Nightly when channel of Fleet is unspecified
|
||||
}
|
||||
|
||||
fun DistributionChannel.toFeedChannel(): String = when (this) {
|
||||
DistributionChannel.EAP -> "eap"
|
||||
DistributionChannel.EAPCandidate -> "eap_candidate"
|
||||
DistributionChannel.Nightly -> "nightly"
|
||||
DistributionChannel.Unspecified -> error("cannot resolve feed channel from an unspecified distribution channel")
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package fleet.buildtool.platform
|
||||
|
||||
// TODO: maybe this needs its own module instead
|
||||
|
||||
enum class MarketplaceChannel(val value: String) {
|
||||
Stable("stable"),
|
||||
Nightly("nightly");
|
||||
|
||||
override fun toString(): String = value
|
||||
|
||||
companion object {
|
||||
private val byValues = MarketplaceChannel.values().associateBy { it.value }
|
||||
fun fromString(s: String): MarketplaceChannel? = byValues[s]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
package fleet.buildtool.platform
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import java.nio.file.Path
|
||||
import java.io.Serializable as JavaSerializable
|
||||
|
||||
val supportedPlatforms = listOf(
|
||||
Platform.Windows.WindowsX64,
|
||||
Platform.Windows.WindowsAarch64,
|
||||
Platform.Linux.LinuxX64,
|
||||
Platform.Linux.LinuxAarch64,
|
||||
Platform.MacOs.MacOsX64,
|
||||
Platform.MacOs.MacOsAarch64,
|
||||
)
|
||||
val supportedOses = supportedPlatforms.map { it.os }.toSet()
|
||||
|
||||
@Serializable
|
||||
sealed class Platform(val os: OS) : JavaSerializable {
|
||||
abstract val arch: Arch
|
||||
|
||||
@Serializable
|
||||
sealed class Windows(override val arch: Arch) : Platform(OS.WINDOWS) {
|
||||
@Serializable
|
||||
object WindowsX64 : Windows(Arch.X64) {
|
||||
private fun readResolve(): Any = WindowsX64
|
||||
}
|
||||
|
||||
@Serializable
|
||||
object WindowsAarch64 : Windows(Arch.AARCH64) {
|
||||
private fun readResolve(): Any = WindowsAarch64
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
sealed class Linux(override val arch: Arch) : Platform(OS.LINUX) {
|
||||
@Serializable
|
||||
object LinuxX64 : Linux(Arch.X64) {
|
||||
private fun readResolve(): Any = LinuxX64
|
||||
}
|
||||
|
||||
@Serializable
|
||||
object LinuxAarch64 : Linux(Arch.AARCH64) {
|
||||
private fun readResolve(): Any = LinuxAarch64
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
sealed class MacOs(override val arch: Arch) : Platform(OS.MACOS) {
|
||||
@Serializable
|
||||
object MacOsX64 : MacOs(Arch.X64) {
|
||||
private fun readResolve(): Any = MacOsX64
|
||||
}
|
||||
|
||||
@Serializable
|
||||
object MacOsAarch64 : MacOs(Arch.AARCH64) {
|
||||
private fun readResolve(): Any = MacOsAarch64
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun buildPlatform(): Platform {
|
||||
val os = OS.currentOs()
|
||||
val arch = Arch.currentArch()
|
||||
return supportedPlatforms.findPlatform(os, arch)
|
||||
}
|
||||
|
||||
fun windows(arch: Arch) = when (arch) {
|
||||
Arch.AARCH64 -> Windows.WindowsAarch64
|
||||
Arch.X64 -> Windows.WindowsX64
|
||||
}
|
||||
|
||||
fun linux(arch: Arch) = when (arch) {
|
||||
Arch.AARCH64 -> Linux.LinuxAarch64
|
||||
Arch.X64 -> Linux.LinuxX64
|
||||
}
|
||||
|
||||
fun macos(arch: Arch) = when (arch) {
|
||||
Arch.AARCH64 -> MacOs.MacOsAarch64
|
||||
Arch.X64 -> MacOs.MacOsX64
|
||||
}
|
||||
|
||||
fun List<Platform>.findPlatform(os: OS, arch: Arch) = singleOrNull { p ->
|
||||
p.os == os && p.arch == arch
|
||||
} ?: error("unsupported platform $os $arch (or more than one supported platform is matching this triple)")
|
||||
}
|
||||
}
|
||||
|
||||
enum class Arch {
|
||||
AARCH64, X64;
|
||||
|
||||
companion object {
|
||||
fun fromString(arch: String): Arch = when (arch.lowercase()) {
|
||||
"x86_64", "amd64", "x64" -> X64
|
||||
"arm64", "aarch64" -> AARCH64
|
||||
else -> error("unsupported arch '$arch'")
|
||||
}
|
||||
|
||||
fun currentArch(): Arch {
|
||||
val arch = System.getProperty("os.arch") ?: error("failed to resolve system property 'os.arch'")
|
||||
return fromString(arch)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class OS {
|
||||
MACOS, WINDOWS, LINUX;
|
||||
|
||||
companion object {
|
||||
fun fromString(os: String): OS = with(os.lowercase()) {
|
||||
when {
|
||||
contains("win") -> WINDOWS
|
||||
contains("mac") -> MACOS
|
||||
contains("nix") || contains("nux") -> LINUX
|
||||
else -> error("unsuppported OS '$os'")
|
||||
}
|
||||
}
|
||||
|
||||
fun currentOs(): OS {
|
||||
val os = System.getProperty("os.name") ?: error("failed to resolve system property 'os.name'")
|
||||
return fromString(os)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class LibCImplementation {
|
||||
GLIBC, MUSL;
|
||||
|
||||
companion object {
|
||||
fun fromString(libc: String): LibCImplementation = when (libc.lowercase()) {
|
||||
"musl" -> MUSL
|
||||
"glibc" -> GLIBC
|
||||
else -> error("unsupported libc implementation '$libc'")
|
||||
}
|
||||
|
||||
// TODO: proper heuristic on libc detection for alpine linux support for example
|
||||
fun currentLibc() = GLIBC
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* String representation of OS in Fleet parts (S3 storage, artefact names, etc.)
|
||||
*/
|
||||
fun OS.toFleetPartOsString() = when (this) {
|
||||
OS.MACOS -> "macos"
|
||||
OS.WINDOWS -> "windows"
|
||||
OS.LINUX -> "linux"
|
||||
}
|
||||
|
||||
/**
|
||||
* String representation of Arch in Fleet parts (S3 storage, artefact names, etc.)
|
||||
*/
|
||||
fun Arch.toFleetPartArchString() = when (this) {
|
||||
Arch.AARCH64 -> "aarch64"
|
||||
Arch.X64 -> "x64"
|
||||
}
|
||||
|
||||
fun Arch.distributionArchSuffix() = when (this) {
|
||||
Arch.AARCH64 -> "-aarch64"
|
||||
Arch.X64 -> ""
|
||||
}
|
||||
|
||||
/**
|
||||
* String representation of lib C implementation in Fleet parts (S3 storage, Gradle tooling, etc.)
|
||||
*/
|
||||
fun LibCImplementation.toFleetPartLibcString() = when (this) {
|
||||
LibCImplementation.GLIBC -> null // we do not specify GLIBC in the distribution slug, as of legacy
|
||||
LibCImplementation.MUSL -> "musl"
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts FleetPlatform to the distribution slug used in our S3 for Fleet parts
|
||||
*
|
||||
* Beware, changing this code might result to a massive breaking change for customers of Fleet.
|
||||
*/
|
||||
fun Platform.toS3DistributionSlug(withLibC: LibCImplementation? = null): String {
|
||||
val osName = os.toFleetPartOsString()
|
||||
val archName = arch.toFleetPartArchString()
|
||||
val libc = withLibC?.toFleetPartLibcString()
|
||||
|
||||
return when {
|
||||
libc != null -> "${osName}_${libc}-$archName"
|
||||
else -> "${osName}_$archName"
|
||||
}
|
||||
}
|
||||
|
||||
fun Path.withPlatformBinaryExtension(platform: Platform): Path = when (platform) {
|
||||
is Platform.Windows -> resolveSibling("${fileName}.exe")
|
||||
else -> this
|
||||
}
|
||||
|
||||
fun Platform.binaryExtension() = when (this) {
|
||||
is Platform.Windows -> ".exe"
|
||||
else -> ""
|
||||
}
|
||||
|
||||
fun String.withPlatformBinaryExtension(platform: Platform): String = "$this${platform.binaryExtension()}"
|
||||
@@ -0,0 +1,28 @@
|
||||
package fleet.buildtool.platform
|
||||
|
||||
import java.io.Serializable
|
||||
|
||||
data class RustTarget(val platform: Platform, val libCImplementation: LibCImplementation? = null) : Serializable {
|
||||
|
||||
override fun toString(): String = when (platform) {
|
||||
Platform.Linux.LinuxAarch64 -> when (libCImplementation) {
|
||||
LibCImplementation.GLIBC -> "aarch64-unknown-linux-gnu"
|
||||
LibCImplementation.MUSL, null -> "aarch64-unknown-linux-musl"
|
||||
}
|
||||
|
||||
Platform.Linux.LinuxX64 -> when (libCImplementation) {
|
||||
LibCImplementation.GLIBC -> "x86_64-unknown-linux-gnu"
|
||||
LibCImplementation.MUSL, null -> "x86_64-unknown-linux-musl"
|
||||
}
|
||||
|
||||
Platform.MacOs.MacOsAarch64 -> "aarch64-apple-darwin"
|
||||
Platform.MacOs.MacOsX64 -> "x86_64-apple-darwin"
|
||||
Platform.Windows.WindowsAarch64 -> "aarch64-pc-windows-msvc"
|
||||
Platform.Windows.WindowsX64 -> "x86_64-pc-windows-msvc"
|
||||
}
|
||||
}
|
||||
|
||||
fun Platform.toFleetRustTarget(overrideLibCImplementation: LibCImplementation? = null): RustTarget =
|
||||
RustTarget(this, overrideLibCImplementation)
|
||||
|
||||
fun RustTarget.toS3DistributionSlug(): String = platform.toS3DistributionSlug(libCImplementation)
|
||||
@@ -0,0 +1,5 @@
|
||||
package fleet.buildtool.platform
|
||||
|
||||
const val TEAMCITY_VERSION = "TEAMCITY_VERSION"
|
||||
|
||||
fun isRunningOnTeamcity(): Boolean = System.getenv(TEAMCITY_VERSION)?.isNotBlank() ?: false
|
||||
@@ -0,0 +1,31 @@
|
||||
visibility("private")
|
||||
|
||||
def _fleet_module(ctx):
|
||||
return [
|
||||
DefaultInfo(
|
||||
files = depset([]),
|
||||
),
|
||||
]
|
||||
|
||||
fleet_module = rule(
|
||||
attrs = {
|
||||
"module_name": attr.string(
|
||||
doc = """The Fleet module name""",
|
||||
),
|
||||
"module_library": attr.label(
|
||||
providers = [
|
||||
[JavaInfo],
|
||||
],
|
||||
allow_files = False,
|
||||
),
|
||||
"_haven_cli": attr.label(
|
||||
default = "//fleet/build/cli:haven",
|
||||
executable = True,
|
||||
# allow_single_file = True,
|
||||
cfg = "exec",
|
||||
# cfg = scrubbed_host_platform_transition,
|
||||
),
|
||||
},
|
||||
provides = [],
|
||||
implementation = _fleet_module,
|
||||
)
|
||||
@@ -0,0 +1,30 @@
|
||||
### auto-generated section `build fleet.build.s3` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_s3",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "s3",
|
||||
module_name = "fleet.build.s3",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_s3",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"//fleet/build/platform",
|
||||
"//fleet/build/fs",
|
||||
"@lib//:kotlinx-coroutines-core",
|
||||
"@lib//:fleet-aws-sdk-kotlin-s3-jvm",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.s3` end
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="module" module-name="fleet.build.platform" />
|
||||
<orderEntry type="module" module-name="fleet.build.fs" />
|
||||
<orderEntry type="library" name="kotlinx-coroutines-core" level="project" />
|
||||
<orderEntry type="library" name="fleet:aws.sdk.kotlin.s3.jvm" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,65 @@
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.s3"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.com.intellij.platform.kotlinx.coroutines.core.jvm134738847.get().let { "${it.group}:kotlinx-coroutines-core:${it.version}" }) {
|
||||
isTransitive = false
|
||||
}
|
||||
implementation(jps.aws.sdk.kotlin.s3.jvm321782429.get().let { "${it.group}:s3:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
|
||||
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-core-jvm")
|
||||
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-core")
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8")
|
||||
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-common")
|
||||
exclude(group = "org.slf4j", module = "slf4j-api")
|
||||
}
|
||||
implementation(project(":fleet.build.platform"))
|
||||
implementation(project(":fleet.build.fs"))
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package fleet.buildtool.s3
|
||||
|
||||
import fleet.buildtool.platform.*
|
||||
|
||||
sealed class S3Version {
|
||||
abstract override fun toString(): String
|
||||
|
||||
class Specific(val version: String) : S3Version() {
|
||||
override fun toString() = version
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for local testing only, artefacts using this version should never be used in production code.
|
||||
* This is a mitigation until we have some of the logic described in https://youtrack.jetbrains.com/issue/FL-18599
|
||||
*/
|
||||
object Latest : S3Version() {
|
||||
override fun toString() = "latest"
|
||||
}
|
||||
}
|
||||
|
||||
private const val partsPrefix = "fleet-parts"
|
||||
|
||||
fun Platform.fleetFleetDockS3Key(s3Version: S3Version): String = fleetPartS3Key(s3Version, "fleet-dock", { ".tar.zst" })
|
||||
fun Platform.fleetFleetJBRS3Key(s3Version: S3Version): String = fleetPartS3Key(s3Version, "fleet-jbr", { ".tar.zst" }, archiveName = "jbr")
|
||||
|
||||
fun Platform.fleetPartS3Key(
|
||||
s3Version: S3Version,
|
||||
partName: String,
|
||||
extension: () -> String,
|
||||
archiveName: String = partName,
|
||||
) = fleetPartS3Key(
|
||||
s3Version = s3Version,
|
||||
partName = partName,
|
||||
extension = extension,
|
||||
distributionSlug = "${toS3DistributionSlug()}/",
|
||||
archiveName = archiveName,
|
||||
)
|
||||
|
||||
fun fleetPartS3Key(
|
||||
s3Version: S3Version,
|
||||
partName: String,
|
||||
extension: () -> String,
|
||||
archiveName: String = partName,
|
||||
): String = fleetPartS3Key(
|
||||
s3Version,
|
||||
partName,
|
||||
extension,
|
||||
distributionSlug = "",
|
||||
archiveName = archiveName,
|
||||
)
|
||||
|
||||
fun fleetPartS3Key(
|
||||
s3Version: S3Version,
|
||||
partName: String,
|
||||
extension: () -> String,
|
||||
distributionSlug: String,
|
||||
archiveName: String = partName,
|
||||
): String = when (s3Version) {
|
||||
S3Version.Latest -> "fleet-parts/latest/$partName/$distributionSlug$archiveName-latest${extension()}"
|
||||
is S3Version.Specific -> "$partsPrefix/$partName/$distributionSlug$archiveName-${s3Version.version}${extension()}"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package fleet.buildtool.s3
|
||||
|
||||
import aws.sdk.kotlin.services.s3.S3Client
|
||||
import aws.sdk.kotlin.services.s3.headObject
|
||||
import aws.sdk.kotlin.services.s3.model.HeadObjectRequest
|
||||
import aws.sdk.kotlin.services.s3.model.NotFound
|
||||
import aws.sdk.kotlin.services.s3.model.S3Exception
|
||||
|
||||
suspend fun S3Client.objectExists(block: HeadObjectRequest.Builder.() -> Unit): Boolean = try {
|
||||
headObject(block)
|
||||
true
|
||||
}
|
||||
catch (e: S3Exception) {
|
||||
when {
|
||||
e is NotFound -> false // object does not exist
|
||||
e.sdkErrorMetadata.errorCode == "404" -> false // object does not exist
|
||||
e.sdkErrorMetadata.errorCode == "403" -> false // object does not exist but credentials lacks `s3:ListBucket` permission
|
||||
else -> throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
### auto-generated section `build fleet.build.sign` start
|
||||
load("//build:compiler-options.bzl", "create_kotlinc_options")
|
||||
load("@rules_jvm//:jvm.bzl", "jvm_library")
|
||||
|
||||
create_kotlinc_options(
|
||||
name = "custom_sign",
|
||||
opt_in = [
|
||||
"kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"kotlin.ExperimentalStdlibApi",
|
||||
],
|
||||
x_consistent_data_class_copy_visibility = True,
|
||||
x_jvm_default = "all-compatibility",
|
||||
x_lambdas = "class"
|
||||
)
|
||||
|
||||
jvm_library(
|
||||
name = "sign",
|
||||
module_name = "fleet.build.sign",
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = glob(["srcJvmMain/**/*.kt", "srcJvmMain/**/*.java", "srcJvmMain/**/*.form"], allow_empty = True, exclude = ["**/module-info.java"]),
|
||||
kotlinc_opts = ":custom_sign",
|
||||
deps = [
|
||||
"@lib//:kotlin-stdlib",
|
||||
"@lib//:slf4j-api",
|
||||
]
|
||||
)
|
||||
### auto-generated section `build fleet.build.sign` end
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="5" platform="JVM 21" allPlatforms="JVM [21]" useProjectSettings="false">
|
||||
<compilerSettings>
|
||||
<option name="additionalArguments" value="-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi -opt-in=kotlin.ExperimentalStdlibApi -Xlambdas=class -Xconsistent-data-class-copy-visibility -XXLanguage:+AllowEagerSupertypeAccessibilityChecks" />
|
||||
</compilerSettings>
|
||||
<compilerArguments>
|
||||
<stringArguments>
|
||||
<stringArg name="jvmTarget" arg="21" />
|
||||
<stringArg name="apiVersion" arg="2.2" />
|
||||
<stringArg name="languageVersion" arg="2.2" />
|
||||
</stringArguments>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/srcJvmMain" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/gradlebuild/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="library" name="slf4j-api" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,56 @@
|
||||
// IMPORT__MARKER_START
|
||||
import fleet.buildtool.conventions.configureAtMostOneJvmTargetOrThrow
|
||||
import fleet.buildtool.conventions.withJavaSourceSet
|
||||
// IMPORT__MARKER_END
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
id("fleet.project-module-conventions")
|
||||
id("fleet.toolchain-conventions")
|
||||
alias(libs.plugins.dokka)
|
||||
id("fleet.module-publishing-conventions")
|
||||
id("fleet.sdk-repositories-publishing-conventions")
|
||||
// GRADLE_PLUGINS__MARKER_START
|
||||
id("fleet-module")
|
||||
// GRADLE_PLUGINS__MARKER_END
|
||||
}
|
||||
|
||||
fleetModule {
|
||||
module {
|
||||
name = "fleet.build.sign"
|
||||
importedFromJps {}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
|
||||
kotlin {
|
||||
// KOTLIN__MARKER_START
|
||||
compilerOptions.freeCompilerArgs = listOf(
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-Xlambdas=class",
|
||||
"-Xconsistent-data-class-copy-visibility",
|
||||
"-XXLanguage:+AllowEagerSupertypeAccessibilityChecks",
|
||||
)
|
||||
jvm {}
|
||||
sourceSets.commonMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonMain")) }
|
||||
sourceSets.commonMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonMain")) }
|
||||
sourceSets.commonTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcCommonTest")) }
|
||||
sourceSets.commonTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesCommonTest")) }
|
||||
sourceSets.jvmMain.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmMain")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("main") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmMain")) } } }
|
||||
sourceSets.jvmMain.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmMain")) }
|
||||
sourceSets.jvmTest.configure { kotlin.srcDir(layout.projectDirectory.dir("../srcJvmTest")) }
|
||||
configureAtMostOneJvmTargetOrThrow { compilations.named("test") { withJavaSourceSet { javaSourceSet -> javaSourceSet.java.srcDir(layout.projectDirectory.dir("../srcJvmTest")) } } }
|
||||
sourceSets.jvmTest.configure { resources.srcDir(layout.projectDirectory.dir("../resourcesJvmTest")) }
|
||||
sourceSets.commonMain.dependencies {
|
||||
implementation(jps.org.jetbrains.kotlin.kotlin.stdlib1993400674.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
exclude(group = "org.jetbrains", module = "annotations")
|
||||
}
|
||||
implementation(jps.org.slf4j.slf4j.api2013636515.get().let { "${it.group}:${it.name}:${it.version}" }) {
|
||||
isTransitive = false
|
||||
exclude(group = "org.slf4j", module = "slf4j-jdk14")
|
||||
}
|
||||
}
|
||||
// KOTLIN__MARKER_END
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package fleet.buildtool.sign
|
||||
|
||||
import org.slf4j.Logger
|
||||
import java.nio.file.Path
|
||||
|
||||
val jetSignJsonContentType: Pair<String, String> = "contentType" to "text/plain"
|
||||
|
||||
interface FleetSigner {
|
||||
fun signFiles(files: Collection<Path>, options: Map<String, String> = emptyMap(), logger: Logger)
|
||||
fun gpgSign(data: Map<String, ByteArray>, options: Map<String, String> = emptyMap(), temporaryDirectory: Path, logger: Logger): Map<String, ByteArray>
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package fleet.buildtool.sign
|
||||
|
||||
import org.slf4j.Logger
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.StandardOpenOption
|
||||
import kotlin.io.path.pathString
|
||||
import java.io.Serializable as JavaSerializable
|
||||
|
||||
object MockSigner : FleetSigner, JavaSerializable {
|
||||
override fun signFiles(files: Collection<Path>, options: Map<String, String>, logger: Logger) {
|
||||
files.forEach { file ->
|
||||
Files.writeString(file.resolveSibling("${file.fileName.pathString}.asc"), "", StandardOpenOption.CREATE)
|
||||
logger.info("[mockSign]: pretended to sign '${file.fileName.pathString}'")
|
||||
}
|
||||
}
|
||||
|
||||
override fun gpgSign(data: Map<String, ByteArray>, options: Map<String, String>, temporaryDirectory: Path, logger: Logger): Map<String, ByteArray> =
|
||||
data.mapValues { (key, _) ->
|
||||
logger.info("[mockSign]: pretended to gpg sign '$key'")
|
||||
byteArrayOf()
|
||||
}
|
||||
}
|
||||
+364
-12
@@ -1458,6 +1458,300 @@ jvm_import(
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
java_library(
|
||||
name = "fleet-aws-sdk-kotlin-s3-jvm",
|
||||
exports = [
|
||||
":aws_sdk_kotlin-s3-jvm-1_0_69_http_import",
|
||||
":aws_sdk_kotlin-aws-config-jvm-1_0_69_http_import",
|
||||
":aws_smithy_kotlin-serde-json-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-serde-form-url-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16_http_import",
|
||||
":aws_sdk_kotlin-aws-core-jvm-1_0_69_http_import",
|
||||
":aws_sdk_kotlin-aws-endpoint-jvm-1_0_69_http_import",
|
||||
":aws_smithy_kotlin-http-client-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-runtime-core-jvm-1_0_16_http_import",
|
||||
":com_squareup_okio-okio-jvm-3_6_0_http_import",
|
||||
":aws_smithy_kotlin-smithy-client-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-telemetry-api-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-credentials-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-event-stream-jvm-1_0_16_http_import",
|
||||
":aws_sdk_kotlin-aws-http-jvm-1_0_69_http_import",
|
||||
":aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-signing-common-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-signing-default-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-auth-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-auth-api-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-auth-aws-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16_http_import",
|
||||
":com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11_http_import",
|
||||
":com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11_http_import",
|
||||
":aws_smithy_kotlin-identity-api-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-serde-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-serde-xml-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16_http_import",
|
||||
":aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16_http_import",
|
||||
],
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_sdk_kotlin-s3-jvm-1_0_69_http_import",
|
||||
jar = "@aws_sdk_kotlin-s3-jvm-1_0_69_http//file",
|
||||
source_jar = "@aws_sdk_kotlin-s3-jvm-1_0_69_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_sdk_kotlin-aws-config-jvm-1_0_69_http_import",
|
||||
jar = "@aws_sdk_kotlin-aws-config-jvm-1_0_69_http//file",
|
||||
source_jar = "@aws_sdk_kotlin-aws-config-jvm-1_0_69_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-serde-json-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-serde-json-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-serde-json-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-serde-form-url-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-serde-form-url-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-serde-form-url-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_sdk_kotlin-aws-core-jvm-1_0_69_http_import",
|
||||
jar = "@aws_sdk_kotlin-aws-core-jvm-1_0_69_http//file",
|
||||
source_jar = "@aws_sdk_kotlin-aws-core-jvm-1_0_69_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_sdk_kotlin-aws-endpoint-jvm-1_0_69_http_import",
|
||||
jar = "@aws_sdk_kotlin-aws-endpoint-jvm-1_0_69_http//file",
|
||||
source_jar = "@aws_sdk_kotlin-aws-endpoint-jvm-1_0_69_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-client-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-client-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-client-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-runtime-core-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-runtime-core-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-runtime-core-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_squareup_okio-okio-jvm-3_6_0_http_import",
|
||||
jar = "@com_squareup_okio-okio-jvm-3_6_0_http//file",
|
||||
source_jar = "@com_squareup_okio-okio-jvm-3_6_0_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-smithy-client-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-smithy-client-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-smithy-client-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-telemetry-api-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-telemetry-api-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-telemetry-api-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-credentials-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-credentials-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-credentials-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-event-stream-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-event-stream-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-event-stream-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_sdk_kotlin-aws-http-jvm-1_0_69_http_import",
|
||||
jar = "@aws_sdk_kotlin-aws-http-jvm-1_0_69_http//file",
|
||||
source_jar = "@aws_sdk_kotlin-aws-http-jvm-1_0_69_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-signing-common-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-signing-common-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-signing-common-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-signing-default-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-signing-default-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-signing-default-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-auth-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-auth-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-auth-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-auth-api-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-auth-api-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-auth-api-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-auth-aws-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-auth-aws-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-auth-aws-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11_http_import",
|
||||
jar = "@com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11_http//file",
|
||||
source_jar = "@com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11_http_import",
|
||||
jar = "@com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11_http//file",
|
||||
source_jar = "@com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-identity-api-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-identity-api-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-identity-api-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-serde-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-serde-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-serde-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-serde-xml-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-serde-xml-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-serde-xml-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16_http_import",
|
||||
jar = "@aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16_http//file",
|
||||
source_jar = "@aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16_http//file"
|
||||
)
|
||||
|
||||
java_library(
|
||||
name = "fleet-clikt",
|
||||
exports = [
|
||||
":com_github_ajalt_clikt-clikt-jvm-5_0_3_http_import",
|
||||
":com_github_ajalt_mordant-mordant-jvm-3_0_1_http_import",
|
||||
":com_github_ajalt_mordant-mordant-core-jvm-3_0_1_http_import",
|
||||
":com_github_ajalt_colormath-colormath-jvm-3_6_0_http_import",
|
||||
],
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_github_ajalt_clikt-clikt-jvm-5_0_3_http_import",
|
||||
jar = "@com_github_ajalt_clikt-clikt-jvm-5_0_3_http//file",
|
||||
source_jar = "@com_github_ajalt_clikt-clikt-jvm-5_0_3_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_github_ajalt_mordant-mordant-jvm-3_0_1_http_import",
|
||||
jar = "@com_github_ajalt_mordant-mordant-jvm-3_0_1_http//file",
|
||||
source_jar = "@com_github_ajalt_mordant-mordant-jvm-3_0_1_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_github_ajalt_mordant-mordant-core-jvm-3_0_1_http_import",
|
||||
jar = "@com_github_ajalt_mordant-mordant-core-jvm-3_0_1_http//file",
|
||||
source_jar = "@com_github_ajalt_mordant-mordant-core-jvm-3_0_1_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_github_ajalt_colormath-colormath-jvm-3_6_0_http_import",
|
||||
jar = "@com_github_ajalt_colormath-colormath-jvm-3_6_0_http//file",
|
||||
source_jar = "@com_github_ajalt_colormath-colormath-jvm-3_6_0_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-clikt-core",
|
||||
jar = "@com_github_ajalt_clikt-clikt-core-jvm-5_0_3_http//file",
|
||||
source_jar = "@com_github_ajalt_clikt-clikt-core-jvm-5_0_3_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-github-luben-zstd-jni",
|
||||
jar = "@com_github_luben-zstd-jni-1_5_5-11_http//file",
|
||||
source_jar = "@com_github_luben-zstd-jni-1_5_5-11_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-github-pdvrieze-xmlutil-core-jvm",
|
||||
jar = "@io_github_pdvrieze_xmlutil-core-jvm-0_86_3_http//file",
|
||||
source_jar = "@io_github_pdvrieze_xmlutil-core-jvm-0_86_3_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-github-pdvrieze-xmlutil-serialization-jvm",
|
||||
jar = "@io_github_pdvrieze_xmlutil-serialization-jvm-0_86_3_http//file",
|
||||
source_jar = "@io_github_pdvrieze_xmlutil-serialization-jvm-0_86_3_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-ktor-client-cio",
|
||||
jar = "@io_ktor-ktor-client-cio-jvm-3_1_3_http//file",
|
||||
@@ -1472,6 +1766,20 @@ jvm_import(
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-ktor-client-logging",
|
||||
jar = "@io_ktor-ktor-client-logging-jvm-3_1_3_http//file",
|
||||
source_jar = "@io_ktor-ktor-client-logging-jvm-3_1_3_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-ktor-client-mock",
|
||||
jar = "@io_ktor-ktor-client-mock-jvm-3_1_3_http//file",
|
||||
source_jar = "@io_ktor-ktor-client-mock-jvm-3_1_3_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-io-ktor-events",
|
||||
jar = "@io_ktor-ktor-events-jvm-3_1_3_http//file",
|
||||
@@ -1570,6 +1878,55 @@ jvm_import(
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
java_library(
|
||||
name = "fleet-jetbrains-intellij-idea-community-build-zip",
|
||||
exports = [
|
||||
":com_jetbrains_intellij_idea-idea-community-build-zip-252_11244_http_import",
|
||||
":io_netty-netty-buffer-4_2_0_RC2_http_import",
|
||||
":io_netty-netty-common-4_2_0_RC2_http_import",
|
||||
":org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1_http_import",
|
||||
":com_dynatrace_hash4j-hash4j-0_20_0_http_import",
|
||||
],
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_jetbrains_intellij_idea-idea-community-build-zip-252_11244_http_import",
|
||||
jar = "@com_jetbrains_intellij_idea-idea-community-build-zip-252_11244_http//file",
|
||||
source_jar = "@com_jetbrains_intellij_idea-idea-community-build-zip-252_11244_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2_http_import",
|
||||
jar = "@io_netty-netty-buffer-4_2_0_RC2_http//file",
|
||||
source_jar = "@io_netty-netty-buffer-4_2_0_RC2_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "io_netty-netty-common-4_2_0_RC2_http_import",
|
||||
jar = "@io_netty-netty-common-4_2_0_RC2_http//file",
|
||||
source_jar = "@io_netty-netty-common-4_2_0_RC2_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1_http_import",
|
||||
jar = "@org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1_http//file",
|
||||
source_jar = "@org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "com_dynatrace_hash4j-hash4j-0_20_0_http_import",
|
||||
jar = "@com_dynatrace_hash4j-hash4j-0_20_0_http//file",
|
||||
source_jar = "@com_dynatrace_hash4j-hash4j-0_20_0_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-jetbrains-intellij-platform-util-zip-squashed",
|
||||
jar = "@com_jetbrains_intellij_platform-util-zip-squashed-252_16432_http//file",
|
||||
source_jar = "@com_jetbrains_intellij_platform-util-zip-squashed-252_16432_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-org-fusesource-jansi",
|
||||
jar = "@org_fusesource_jansi-jansi-2_4_1_http//file",
|
||||
@@ -1577,6 +1934,13 @@ jvm_import(
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-tukaani-xz",
|
||||
jar = "@org_tukaani-xz-1_9_http//file",
|
||||
source_jar = "@org_tukaani-xz-1_9_http//file",
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "fleet-util-modules-jetbrains-intellij-platform-util-zip-squashed",
|
||||
jar = "@com_jetbrains_intellij_platform-util-zip-squashed-252_16432_http//file",
|
||||
@@ -8069,18 +8433,6 @@ java_library(
|
||||
visibility = ["//visibility:public"]
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2_http_import",
|
||||
jar = "@io_netty-netty-buffer-4_2_0_RC2_http//file",
|
||||
source_jar = "@io_netty-netty-buffer-4_2_0_RC2_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "io_netty-netty-common-4_2_0_RC2_http_import",
|
||||
jar = "@io_netty-netty-common-4_2_0_RC2_http//file",
|
||||
source_jar = "@io_netty-netty-common-4_2_0_RC2_http//file"
|
||||
)
|
||||
|
||||
jvm_import(
|
||||
name = "netty-codec-compression",
|
||||
jar = "@io_netty-netty-codec-compression-4_2_0_RC2_http//file",
|
||||
|
||||
+680
-64
@@ -1784,6 +1784,566 @@ http_file(
|
||||
downloaded_file_path = "file-prediction-model-0.3.0-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-s3-jvm-1_0_69_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69.jar",
|
||||
sha256 = "3d6cd0bf48c65e965903fa4720d713badeeaa5433bd7b278075c484e3a5709a8",
|
||||
downloaded_file_path = "s3-jvm-1.0.69.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-config-jvm-1_0_69_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69.jar",
|
||||
sha256 = "877ffeaa6fc96192da7383b3c3e16717cb52504f488b80937d796eb875e5565a",
|
||||
downloaded_file_path = "aws-config-jvm-1.0.69.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-json-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16.jar",
|
||||
sha256 = "2f12ed8fbd53e91cb3b2a163b5d06ae2c39f538bd74f23a678889f5be02e8675",
|
||||
downloaded_file_path = "serde-json-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-form-url-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16.jar",
|
||||
sha256 = "198b9b1ec6c33da8c460e6a2e0859d1308f1fcb3f7d4138100f7dd75207edd80",
|
||||
downloaded_file_path = "serde-form-url-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16.jar",
|
||||
sha256 = "633ccbae483c99b27e311a6a70157cfc0dfa19f8eb3ba263198f40f87266c09c",
|
||||
downloaded_file_path = "aws-json-protocols-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-core-jvm-1_0_69_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69.jar",
|
||||
sha256 = "e738ebef7be523c4e1940f5e5b2390ba853d4333f547038b2b31fb3964e99933",
|
||||
downloaded_file_path = "aws-core-jvm-1.0.69.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-endpoint-jvm-1_0_69_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69.jar",
|
||||
sha256 = "d3f30ef5e3b11b358f28f42422226585b72e4a11bf13b1fc3411962dcfde64f3",
|
||||
downloaded_file_path = "aws-endpoint-jvm-1.0.69.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16.jar",
|
||||
sha256 = "aa584dcd05862a8bbe7eb7db73959d93ca6b527cc44536b7d10fcda733411d4b",
|
||||
downloaded_file_path = "http-client-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-runtime-core-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16.jar",
|
||||
sha256 = "8a2323e7d08ff07d2f869e4bcae834773ce0a0e8704cd7404c9625992a748662",
|
||||
downloaded_file_path = "runtime-core-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okio-okio-jvm-3_6_0_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar",
|
||||
sha256 = "67543f0736fc422ae927ed0e504b98bc5e269fda0d3500579337cb713da28412",
|
||||
downloaded_file_path = "okio-jvm-3.6.0.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-smithy-client-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16.jar",
|
||||
sha256 = "ce382d40f998d8dd11008967c3bf4cd51c47182512b84b5f1d48e48d2a3f9770",
|
||||
downloaded_file_path = "smithy-client-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-telemetry-api-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16.jar",
|
||||
sha256 = "508bde368d4b174402aeeccec68c7e29ad9349a953b1efab75ebeaa6c0a21f0e",
|
||||
downloaded_file_path = "telemetry-api-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-credentials-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16.jar",
|
||||
sha256 = "01489854c4f9494de6cd5446df8e3c694ad3f6582c5369b9578eb18754f1720c",
|
||||
downloaded_file_path = "aws-credentials-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-event-stream-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16.jar",
|
||||
sha256 = "71fe60ba15b5f9c43f5ee1da0edc13fd98f2a85dbf8c9dcafc666bc1c7e668e7",
|
||||
downloaded_file_path = "aws-event-stream-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-http-jvm-1_0_69_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69.jar",
|
||||
sha256 = "6b7584f233e0715f5394edfbfd5536a480113efe99f3d49bfd58d2395072177a",
|
||||
downloaded_file_path = "aws-http-jvm-1.0.69.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16.jar",
|
||||
sha256 = "6d7028c6e695b872e0ba91679af4dbbabf8e1bfbd6f7fb52be30bb1e398d595d",
|
||||
downloaded_file_path = "aws-protocol-core-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-signing-common-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16.jar",
|
||||
sha256 = "30cf05f9f7ec7d6676031ee2b0c8f4b33b107a93a179ca931d57baa983de70a3",
|
||||
downloaded_file_path = "aws-signing-common-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-signing-default-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16.jar",
|
||||
sha256 = "dd0616302ce4a3fc1c03326bad37e5cf3509377692b6aca5ea17d581ad582d62",
|
||||
downloaded_file_path = "aws-signing-default-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16.jar",
|
||||
sha256 = "94cc5ebcb2d819ebb8c628f64ffa352426f23b3b422834bfa8199cf497a1365d",
|
||||
downloaded_file_path = "aws-xml-protocols-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16.jar",
|
||||
sha256 = "3f0d5d4e67a3097b56b32fa7b26589da9d6bd0968693b395ad1c8f49f60dbdfd",
|
||||
downloaded_file_path = "http-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16.jar",
|
||||
sha256 = "79ed729b7e134609310de7d691b1b80870f467a95bc84f2f6bbf3e43ae83de85",
|
||||
downloaded_file_path = "http-auth-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-api-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16.jar",
|
||||
sha256 = "9664c8d36468c1f575b356f04025ce17417e584a0bb19b640b115b10a8dce72c",
|
||||
downloaded_file_path = "http-auth-api-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-aws-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16.jar",
|
||||
sha256 = "31e3811fd85ba7fcba38a4067d63af8c13c1e05ae7062639fd8c954520315f51",
|
||||
downloaded_file_path = "http-auth-aws-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16.jar",
|
||||
sha256 = "bbbf92cbc8df78a8fa20f0b35613e8d41024ee6525b538ebda280917e1d7e812",
|
||||
downloaded_file_path = "http-client-engine-default-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16.jar",
|
||||
sha256 = "4bfb91b4c6373ac2b1d94a085c69935ca1b56b7b27b21c5228c5bc5da6f7e2dc",
|
||||
downloaded_file_path = "http-client-engine-okhttp-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11.jar",
|
||||
sha256 = "506a1d3aba9f99b55570c7f8813cd79a44946531f29050d5b938474efdb4cf80",
|
||||
downloaded_file_path = "okhttp-jvm-5.0.0-alpha.11.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11.jar",
|
||||
sha256 = "1452873e0cc9637b7e1a717f2cca0cbccebd00c05aaaf67b8adb06777bf4f461",
|
||||
downloaded_file_path = "okhttp-coroutines-jvm-5.0.0-alpha.11.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-identity-api-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16.jar",
|
||||
sha256 = "be3f9bd5ebfb83aa353f407a4389f7b3454a6945f82cea1d41e370aeedae71cd",
|
||||
downloaded_file_path = "identity-api-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16.jar",
|
||||
sha256 = "c017ee899656cf5abf22c3793603cb33ae35f0a805b9fa0707f8146a73a14a7f",
|
||||
downloaded_file_path = "serde-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-xml-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16.jar",
|
||||
sha256 = "72c8559a241af92ce122c0df0dc3749d638d616ebd5da3ba3749a95abca3b349",
|
||||
downloaded_file_path = "serde-xml-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16.jar",
|
||||
sha256 = "4343154bb1b0a282d86b627932a465722eeda3cccd6cc4986fc5e5c4013bfef4",
|
||||
downloaded_file_path = "telemetry-defaults-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16.jar",
|
||||
sha256 = "66c0700ca0c27046b0b12e6cf4c4da423800b88c1c72b2709cd5cbc3e0f1eb64",
|
||||
downloaded_file_path = "logging-slf4j2-jvm-1.0.16.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-s3-jvm-1_0_69-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/s3-jvm/1.0.69/s3-jvm-1.0.69-sources.jar",
|
||||
sha256 = "c7df05b60aec94b092cff2959f1c19d649c169c79c59146c14c69ab6edd451b8",
|
||||
downloaded_file_path = "s3-jvm-1.0.69-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-config-jvm-1_0_69-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-config-jvm/1.0.69/aws-config-jvm-1.0.69-sources.jar",
|
||||
sha256 = "1d4ab3c4eb73f800a059d65f7e7983969a1fbccc2ebc02f999aa41f54fdb314b",
|
||||
downloaded_file_path = "aws-config-jvm-1.0.69-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-json-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-json-jvm/1.0.16/serde-json-jvm-1.0.16-sources.jar",
|
||||
sha256 = "63312de11976e37ccd4a8ccc51c6db0a51220d548d8d25e2d568b2cd36d7b5b7",
|
||||
downloaded_file_path = "serde-json-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-form-url-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-form-url-jvm/1.0.16/serde-form-url-jvm-1.0.16-sources.jar",
|
||||
sha256 = "2fa020f36f3e20da2445a4fe9a7081da9fb9c5099781c9110de5b62bbe291422",
|
||||
downloaded_file_path = "serde-form-url-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-json-protocols-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-json-protocols-jvm/1.0.16/aws-json-protocols-jvm-1.0.16-sources.jar",
|
||||
sha256 = "82b5eb3de2edbc38c42558490b612b2c5c2e69ad47183a812c26f0423a6f7f6f",
|
||||
downloaded_file_path = "aws-json-protocols-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-core-jvm-1_0_69-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-core-jvm/1.0.69/aws-core-jvm-1.0.69-sources.jar",
|
||||
sha256 = "2a0fd31b290758e74e725b2d42b7c071cfa458aed45aee2a77ec8601cb434cca",
|
||||
downloaded_file_path = "aws-core-jvm-1.0.69-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-endpoint-jvm-1_0_69-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-endpoint-jvm/1.0.69/aws-endpoint-jvm-1.0.69-sources.jar",
|
||||
sha256 = "1bf9476e19cf4f20f4ede1bb004a819825dbda051c6ac00b486720570b8b77e1",
|
||||
downloaded_file_path = "aws-endpoint-jvm-1.0.69-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-jvm/1.0.16/http-client-jvm-1.0.16-sources.jar",
|
||||
sha256 = "1a21fe3e336c009cb1334993eab2c0cc97c0412775df55a139c8a11c9ca7afcd",
|
||||
downloaded_file_path = "http-client-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-runtime-core-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/runtime-core-jvm/1.0.16/runtime-core-jvm-1.0.16-sources.jar",
|
||||
sha256 = "6db2e152b1b92fc66c381add6e3c378cdcc1bef41cc0c1d8eee78fecd01bba16",
|
||||
downloaded_file_path = "runtime-core-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okio-okio-jvm-3_6_0-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0-sources.jar",
|
||||
sha256 = "870a42a7b468af8fd24d67b7b62e5861aab398c56f15a80b10642e7001564e2f",
|
||||
downloaded_file_path = "okio-jvm-3.6.0-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-smithy-client-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/smithy-client-jvm/1.0.16/smithy-client-jvm-1.0.16-sources.jar",
|
||||
sha256 = "4f326ea673b6cd99b33739e6fb4df8ae80bd28def81cc3e1641f33c44c4d6f54",
|
||||
downloaded_file_path = "smithy-client-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-telemetry-api-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/telemetry-api-jvm/1.0.16/telemetry-api-jvm-1.0.16-sources.jar",
|
||||
sha256 = "b5a2a420df517652ada3da3de5534e836d78633ae528d9b6aa3fd32b0bad4668",
|
||||
downloaded_file_path = "telemetry-api-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-credentials-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-credentials-jvm/1.0.16/aws-credentials-jvm-1.0.16-sources.jar",
|
||||
sha256 = "ec3a34bfb8b38e620233d7bf54e66e87e22644f74d884635aa2ed942442ea945",
|
||||
downloaded_file_path = "aws-credentials-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-event-stream-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-event-stream-jvm/1.0.16/aws-event-stream-jvm-1.0.16-sources.jar",
|
||||
sha256 = "2b732ea574cab4c437f717873193aeade7482ed7e6f024d1a368549cf8cb0ae1",
|
||||
downloaded_file_path = "aws-event-stream-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_sdk_kotlin-aws-http-jvm-1_0_69-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/sdk/kotlin/aws-http-jvm/1.0.69/aws-http-jvm-1.0.69-sources.jar",
|
||||
sha256 = "1c6858e4f5e036a118e5cf54d7b72990a968252141e65da489955cec0103919b",
|
||||
downloaded_file_path = "aws-http-jvm-1.0.69-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-protocol-core-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-protocol-core-jvm/1.0.16/aws-protocol-core-jvm-1.0.16-sources.jar",
|
||||
sha256 = "db32fffaf7bda060bde5623ac91da87888af287629c5a44b34026f86a4ed7a59",
|
||||
downloaded_file_path = "aws-protocol-core-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-signing-common-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-signing-common-jvm/1.0.16/aws-signing-common-jvm-1.0.16-sources.jar",
|
||||
sha256 = "0e43d7624b1d6f9aa0700f4cbed81951002f53a5138d412e84aa373eb57750b5",
|
||||
downloaded_file_path = "aws-signing-common-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-signing-default-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-signing-default-jvm/1.0.16/aws-signing-default-jvm-1.0.16-sources.jar",
|
||||
sha256 = "d8c2708cf555ce2925aa60a51540bf1480440e8f991bcedefd62fd6f07c48d23",
|
||||
downloaded_file_path = "aws-signing-default-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-aws-xml-protocols-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/aws-xml-protocols-jvm/1.0.16/aws-xml-protocols-jvm-1.0.16-sources.jar",
|
||||
sha256 = "249a38bd14fae9257d1424311e94aaf01c552cee4bf3d15c482efb999d8f99b9",
|
||||
downloaded_file_path = "aws-xml-protocols-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-jvm/1.0.16/http-jvm-1.0.16-sources.jar",
|
||||
sha256 = "2c8e0881e79988310ad402a79ef9dcf604d68b675bdd9056343a5133e8edf191",
|
||||
downloaded_file_path = "http-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-jvm/1.0.16/http-auth-jvm-1.0.16-sources.jar",
|
||||
sha256 = "78222f0442031fa2201d512885279b027385bd89e7760006ee27b7d825c2913c",
|
||||
downloaded_file_path = "http-auth-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-api-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-api-jvm/1.0.16/http-auth-api-jvm-1.0.16-sources.jar",
|
||||
sha256 = "41f50535e53ddb3da31de70f65d80c8c3680055abc3de3336ff0ddbe9dab95ca",
|
||||
downloaded_file_path = "http-auth-api-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-auth-aws-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-auth-aws-jvm/1.0.16/http-auth-aws-jvm-1.0.16-sources.jar",
|
||||
sha256 = "318701ebe5a4cb2b9ef4602ee940e1011e3385629a3ab2b96dfbce8fa2b9319a",
|
||||
downloaded_file_path = "http-auth-aws-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-engine-default-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-engine-default-jvm/1.0.16/http-client-engine-default-jvm-1.0.16-sources.jar",
|
||||
sha256 = "430597b6f8f43bdb1ae5987d564b156ea8a5e00658793db976e16c472f219320",
|
||||
downloaded_file_path = "http-client-engine-default-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-http-client-engine-okhttp-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/http-client-engine-okhttp-jvm/1.0.16/http-client-engine-okhttp-jvm-1.0.16-sources.jar",
|
||||
sha256 = "bbbcd3c14a7d4939f270b68547d90755b56c9b66f6d715964ab3bdcb0f17d252",
|
||||
downloaded_file_path = "http-client-engine-okhttp-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okhttp3-okhttp-jvm-5_0_0-alpha_11-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-jvm/5.0.0-alpha.11/okhttp-jvm-5.0.0-alpha.11-sources.jar",
|
||||
sha256 = "93da6c712a017eb4625fd9093bb1305c670583cdaa2279cfe79f1e308b544e1e",
|
||||
downloaded_file_path = "okhttp-jvm-5.0.0-alpha.11-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_squareup_okhttp3-okhttp-coroutines-jvm-5_0_0-alpha_11-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/squareup/okhttp3/okhttp-coroutines-jvm/5.0.0-alpha.11/okhttp-coroutines-jvm-5.0.0-alpha.11-sources.jar",
|
||||
sha256 = "a97b8fb6bc30483991426ec3ec223c8d0f8994fa10980448c404077a13be9ec4",
|
||||
downloaded_file_path = "okhttp-coroutines-jvm-5.0.0-alpha.11-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-identity-api-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/identity-api-jvm/1.0.16/identity-api-jvm-1.0.16-sources.jar",
|
||||
sha256 = "a2cafc146661a3f9dd887cdd03cd5b39acd8babd5dfcf7772e226b35ecd103f5",
|
||||
downloaded_file_path = "identity-api-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-jvm/1.0.16/serde-jvm-1.0.16-sources.jar",
|
||||
sha256 = "303ce8427e5b0b4037f7cfa6b0e75470cb6c8c46166bb73c0dc628a988acee18",
|
||||
downloaded_file_path = "serde-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-serde-xml-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/serde-xml-jvm/1.0.16/serde-xml-jvm-1.0.16-sources.jar",
|
||||
sha256 = "fbd7cf3d16fe774af863d6ad9a460a2fef5c4c338b771f77e308aa50cba2df37",
|
||||
downloaded_file_path = "serde-xml-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-telemetry-defaults-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/telemetry-defaults-jvm/1.0.16/telemetry-defaults-jvm-1.0.16-sources.jar",
|
||||
sha256 = "900d1c6c0274a713fed0c03b02f278c32a4af049b6922f6d85db4cc82f5f2207",
|
||||
downloaded_file_path = "telemetry-defaults-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "aws_smithy_kotlin-logging-slf4j2-jvm-1_0_16-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/aws/smithy/kotlin/logging-slf4j2-jvm/1.0.16/logging-slf4j2-jvm-1.0.16-sources.jar",
|
||||
sha256 = "0bac498fe98ab2e4f25af1551a0df700e03ff628d0e909e41ceedc935591bb57",
|
||||
downloaded_file_path = "logging-slf4j2-jvm-1.0.16-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_clikt-clikt-jvm-5_0_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3.jar",
|
||||
sha256 = "9cd19e04782f461dffeb183d17e576984febb7934932cb406646ac41e428863b",
|
||||
downloaded_file_path = "clikt-jvm-5.0.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_mordant-mordant-jvm-3_0_1_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1.jar",
|
||||
sha256 = "9ed3b976fcccc78da746d49866fa8ebb8f10530a93c544ea0420259a607dd95e",
|
||||
downloaded_file_path = "mordant-jvm-3.0.1.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_mordant-mordant-core-jvm-3_0_1_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1.jar",
|
||||
sha256 = "9cf9b46d1f49f2d6cf2635462b29dc59e0c29b1fb2f085b3312888bbe9c7cd31",
|
||||
downloaded_file_path = "mordant-core-jvm-3.0.1.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_colormath-colormath-jvm-3_6_0_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0.jar",
|
||||
sha256 = "59f741adfe62053066782d8b1a45afd06685a4bc64b33277e54876b993ed885c",
|
||||
downloaded_file_path = "colormath-jvm-3.6.0.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_clikt-clikt-jvm-5_0_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/clikt/clikt-jvm/5.0.3/clikt-jvm-5.0.3-sources.jar",
|
||||
sha256 = "42e19164ac1058a8f86f5929bad928d749e96376c5e58499924f441fff67f714",
|
||||
downloaded_file_path = "clikt-jvm-5.0.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_mordant-mordant-jvm-3_0_1-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/mordant/mordant-jvm/3.0.1/mordant-jvm-3.0.1-sources.jar",
|
||||
sha256 = "3aa71b91497d7a6e10947949ee91039186c181fda3cc5418e49ccd5cbee98b62",
|
||||
downloaded_file_path = "mordant-jvm-3.0.1-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_mordant-mordant-core-jvm-3_0_1-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/mordant/mordant-core-jvm/3.0.1/mordant-core-jvm-3.0.1-sources.jar",
|
||||
sha256 = "96c7a7138bce85cd7aa4d3359b0febd4f907ab4692e9434ac2a9cf364c2f7b09",
|
||||
downloaded_file_path = "mordant-core-jvm-3.0.1-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_colormath-colormath-jvm-3_6_0-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/colormath/colormath-jvm/3.6.0/colormath-jvm-3.6.0-sources.jar",
|
||||
sha256 = "cd4baaaa928f21ec45b0cbf78f7071a94be9830bf0e3ed8f320e851f47b32864",
|
||||
downloaded_file_path = "colormath-jvm-3.6.0-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_clikt-clikt-core-jvm-5_0_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/clikt/clikt-core-jvm/5.0.3/clikt-core-jvm-5.0.3.jar",
|
||||
sha256 = "69cba94a2291f74b78c88239cd8b67eaf3f08e0dad297749abe6477b3e9b81b1",
|
||||
downloaded_file_path = "clikt-core-jvm-5.0.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_ajalt_clikt-clikt-core-jvm-5_0_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/ajalt/clikt/clikt-core-jvm/5.0.3/clikt-core-jvm-5.0.3-sources.jar",
|
||||
sha256 = "517d028e3b038ae9fa2cac9d536d1ddc78c35a463f3c65f524503c6f6699e4a6",
|
||||
downloaded_file_path = "clikt-core-jvm-5.0.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_luben-zstd-jni-1_5_5-11_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar",
|
||||
sha256 = "d75b2ced6059f81ad23e021c554259b906b6c4f2991cb772409827569ead4c1a",
|
||||
downloaded_file_path = "zstd-jni-1.5.5-11.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_github_luben-zstd-jni-1_5_5-11-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11-sources.jar",
|
||||
sha256 = "658dc0dc9832114d6e8665eb297ae432ad90ec1419fadbc97f974179137bb8c2",
|
||||
downloaded_file_path = "zstd-jni-1.5.5-11-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_github_pdvrieze_xmlutil-core-jvm-0_86_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3.jar",
|
||||
sha256 = "91527d86fea04bd6183d140a09f10dab2dea727af12d27d9165ee342ea3d0ede",
|
||||
downloaded_file_path = "core-jvm-0.86.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_github_pdvrieze_xmlutil-core-jvm-0_86_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/github/pdvrieze/xmlutil/core-jvm/0.86.3/core-jvm-0.86.3-sources.jar",
|
||||
sha256 = "ef68ec64bfe82cd284b634edd19ec3630746644af53184ba70cbb4878002fdcb",
|
||||
downloaded_file_path = "core-jvm-0.86.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_github_pdvrieze_xmlutil-serialization-jvm-0_86_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3.jar",
|
||||
sha256 = "9ce273dcb860b92a5bf2ec36ad1e2a11b41aed89c6c984ca73e87eff5eda1bd0",
|
||||
downloaded_file_path = "serialization-jvm-0.86.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_github_pdvrieze_xmlutil-serialization-jvm-0_86_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/github/pdvrieze/xmlutil/serialization-jvm/0.86.3/serialization-jvm-0.86.3-sources.jar",
|
||||
sha256 = "6aa7410dead13532a0d254b5ce98d7e5db19f06743014ba76f084f86c2c0b561",
|
||||
downloaded_file_path = "serialization-jvm-0.86.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-cio-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-cio-jvm/3.1.3/ktor-client-cio-jvm-3.1.3.jar",
|
||||
@@ -1812,6 +2372,34 @@ http_file(
|
||||
downloaded_file_path = "ktor-client-core-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-logging-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3.jar",
|
||||
sha256 = "ecabf013b137f1a69c39cffeae1ba9e365659357b21688f1876ee6cf50fd00b9",
|
||||
downloaded_file_path = "ktor-client-logging-jvm-3.1.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-logging-jvm-3_1_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3-sources.jar",
|
||||
sha256 = "4ac316b70a1fa7dd06c17926de41340d24c045b3a96e87139f5a7debb6d78a9a",
|
||||
downloaded_file_path = "ktor-client-logging-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-mock-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3.jar",
|
||||
sha256 = "2ae0d57bb9fceb8ee2aeda6536acc6f3e1de355984b4c9da720566b85f1525e8",
|
||||
downloaded_file_path = "ktor-client-mock-jvm-3.1.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-mock-jvm-3_1_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3-sources.jar",
|
||||
sha256 = "8c47ed0e7a044a368ee139db4d9e372ab295931b8091fcc6027c6124de8eb7ef",
|
||||
downloaded_file_path = "ktor-client-mock-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-events-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-events-jvm/3.1.3/ktor-events-jvm-3.1.3.jar",
|
||||
@@ -2009,17 +2597,73 @@ http_file(
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_fusesource_jansi-jansi-2_4_1_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar",
|
||||
sha256 = "2e5e775a9dc58ffa6bbd6aa6f099d62f8b62dcdeb4c3c3bbbe5cf2301bc2dcc1",
|
||||
downloaded_file_path = "jansi-2.4.1.jar"
|
||||
name = "com_jetbrains_intellij_idea-idea-community-build-zip-252_11244_http",
|
||||
url = "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies/com/jetbrains/intellij/idea/idea-community-build-zip/252.11244/idea-community-build-zip-252.11244.jar",
|
||||
sha256 = "c86d2bfa23d5d23f916d3574591a166b3df259bea6c23d39abea597b34ba022f",
|
||||
downloaded_file_path = "idea-community-build-zip-252.11244.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_fusesource_jansi-jansi-2_4_1-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1-sources.jar",
|
||||
sha256 = "f707511567a13ebf8c51164133770eb5a8e023e1d391bfbc6e7a0591c71729b8",
|
||||
downloaded_file_path = "jansi-2.4.1-sources.jar"
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2.jar",
|
||||
sha256 = "74d953cec00048b892112f9602fc7b1113ea55337dc1ede32e449efcb2b231c7",
|
||||
downloaded_file_path = "netty-buffer-4.2.0.RC2.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-common-4_2_0_RC2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2.jar",
|
||||
sha256 = "cc65afe17daf2f9380d3c64460f5b10ec279f98b9461fbf0ccf62b3cb3ee6c37",
|
||||
downloaded_file_path = "netty-common-4.2.0.RC2.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1_http",
|
||||
url = "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8.5.15-jb1/intellij-deps-fastutil-8.5.15-jb1.jar",
|
||||
sha256 = "5a0d7557d494732a6165e4188eb11f10faca196350cad04d9950abd83e6dd148",
|
||||
downloaded_file_path = "intellij-deps-fastutil-8.5.15-jb1.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_dynatrace_hash4j-hash4j-0_20_0_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0.jar",
|
||||
sha256 = "0181873ba85684d119134f5598432f5b63109a03adc455767a1500b2145df8a2",
|
||||
downloaded_file_path = "hash4j-0.20.0.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_jetbrains_intellij_idea-idea-community-build-zip-252_11244-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies/com/jetbrains/intellij/idea/idea-community-build-zip/252.11244/idea-community-build-zip-252.11244-sources.jar",
|
||||
sha256 = "ca10b44853d641b0bfeb5ed57cca50d16892735821542bd7fd45e3b33314c566",
|
||||
downloaded_file_path = "idea-community-build-zip-252.11244-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2-sources.jar",
|
||||
sha256 = "e483fa26b8035c8c2a2306371a19e821b1c63a08465c31b9711e6db79e691715",
|
||||
downloaded_file_path = "netty-buffer-4.2.0.RC2-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-common-4_2_0_RC2-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2-sources.jar",
|
||||
sha256 = "5b3516f7d3f5d4884af89bd632713d779aba17b5a8eabc6366777201878d7e27",
|
||||
downloaded_file_path = "netty-common-4.2.0.RC2-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_jetbrains_intellij_deps_fastutil-intellij-deps-fastutil-8_5_15-jb1-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8.5.15-jb1/intellij-deps-fastutil-8.5.15-jb1-sources.jar",
|
||||
sha256 = "57d0e59cd6f6bd931d893ab0089bdcb13aee0ed78f1f8e85d88bc55b89815211",
|
||||
downloaded_file_path = "intellij-deps-fastutil-8.5.15-jb1-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_dynatrace_hash4j-hash4j-0_20_0-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/dynatrace/hash4j/hash4j/0.20.0/hash4j-0.20.0-sources.jar",
|
||||
sha256 = "63ddb785e1691849d571a78dfca9c311f2646d148fd7cbf1a60999e7e93a54bc",
|
||||
downloaded_file_path = "hash4j-0.20.0-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
@@ -2036,6 +2680,34 @@ http_file(
|
||||
downloaded_file_path = "util-zip-squashed-252.16432-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_fusesource_jansi-jansi-2_4_1_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1.jar",
|
||||
sha256 = "2e5e775a9dc58ffa6bbd6aa6f099d62f8b62dcdeb4c3c3bbbe5cf2301bc2dcc1",
|
||||
downloaded_file_path = "jansi-2.4.1.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_fusesource_jansi-jansi-2_4_1-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/fusesource/jansi/jansi/2.4.1/jansi-2.4.1-sources.jar",
|
||||
sha256 = "f707511567a13ebf8c51164133770eb5a8e023e1d391bfbc6e7a0591c71729b8",
|
||||
downloaded_file_path = "jansi-2.4.1-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_tukaani-xz-1_9_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar",
|
||||
sha256 = "211b306cfc44f8f96df3a0a3ddaf75ba8c5289eed77d60d72f889bb855f535e5",
|
||||
downloaded_file_path = "xz-1.9.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_tukaani-xz-1_9-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9-sources.jar",
|
||||
sha256 = "5befa47f06b90e752f035191dde7f2deb59f36000f1ca6cc77d2362a82b6f462",
|
||||
downloaded_file_path = "xz-1.9-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "org_jetbrains_intellij_deps_ift-git-learning-project-212_0_2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/packages.jetbrains.team/maven/p/ij/intellij-dependencies/org/jetbrains/intellij/deps/ift/git-learning-project/212.0.2/git-learning-project-212.0.2.jar",
|
||||
@@ -6509,20 +7181,6 @@ http_file(
|
||||
downloaded_file_path = "ktor-client-java-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-mock-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3.jar",
|
||||
sha256 = "2ae0d57bb9fceb8ee2aeda6536acc6f3e1de355984b4c9da720566b85f1525e8",
|
||||
downloaded_file_path = "ktor-client-mock-jvm-3.1.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-mock-jvm-3_1_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-mock-jvm/3.1.3/ktor-client-mock-jvm-3.1.3-sources.jar",
|
||||
sha256 = "8c47ed0e7a044a368ee139db4d9e372ab295931b8091fcc6027c6124de8eb7ef",
|
||||
downloaded_file_path = "ktor-client-mock-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-okhttp-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-okhttp-jvm/3.1.3/ktor-client-okhttp-jvm-3.1.3.jar",
|
||||
@@ -8070,20 +8728,6 @@ http_file(
|
||||
downloaded_file_path = "ktor-client-encoding-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-logging-jvm-3_1_3_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3.jar",
|
||||
sha256 = "ecabf013b137f1a69c39cffeae1ba9e365659357b21688f1876ee6cf50fd00b9",
|
||||
downloaded_file_path = "ktor-client-logging-jvm-3.1.3.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_ktor-ktor-client-logging-jvm-3_1_3-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/ktor/ktor-client-logging-jvm/3.1.3/ktor-client-logging-jvm-3.1.3-sources.jar",
|
||||
sha256 = "4ac316b70a1fa7dd06c17926de41340d24c045b3a96e87139f5a7debb6d78a9a",
|
||||
downloaded_file_path = "ktor-client-logging-jvm-3.1.3-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "com_miglayout-miglayout-swing-11_4_2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/com/miglayout/miglayout-swing/11.4.2/miglayout-swing-11.4.2.jar",
|
||||
@@ -11647,34 +12291,6 @@ http_file(
|
||||
downloaded_file_path = "mockito-kotlin-6.0.0-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2.jar",
|
||||
sha256 = "74d953cec00048b892112f9602fc7b1113ea55337dc1ede32e449efcb2b231c7",
|
||||
downloaded_file_path = "netty-buffer-4.2.0.RC2.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-common-4_2_0_RC2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2.jar",
|
||||
sha256 = "cc65afe17daf2f9380d3c64460f5b10ec279f98b9461fbf0ccf62b3cb3ee6c37",
|
||||
downloaded_file_path = "netty-common-4.2.0.RC2.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-buffer-4_2_0_RC2-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-buffer/4.2.0.RC2/netty-buffer-4.2.0.RC2-sources.jar",
|
||||
sha256 = "e483fa26b8035c8c2a2306371a19e821b1c63a08465c31b9711e6db79e691715",
|
||||
downloaded_file_path = "netty-buffer-4.2.0.RC2-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-common-4_2_0_RC2-sources_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-common/4.2.0.RC2/netty-common-4.2.0.RC2-sources.jar",
|
||||
sha256 = "5b3516f7d3f5d4884af89bd632713d779aba17b5a8eabc6366777201878d7e27",
|
||||
downloaded_file_path = "netty-common-4.2.0.RC2-sources.jar"
|
||||
)
|
||||
|
||||
http_file(
|
||||
name = "io_netty-netty-codec-compression-4_2_0_RC2_http",
|
||||
url = "https://cache-redirector.jetbrains.com/repo1.maven.org/maven2/io/netty/netty-codec-compression/4.2.0.RC2/netty-codec-compression-4.2.0.RC2.jar",
|
||||
|
||||
Reference in New Issue
Block a user