From 648be6bd071309705937d71ecf62b735d32f27c8 Mon Sep 17 00:00:00 2001 From: Tad Fisher Date: Thu, 23 Jan 2020 10:01:38 -0800 Subject: [PATCH] Use custom dependency resolution - Use Apache Ivy to resolve artifact URLs - Update build model with full artifact IDs - Generate Maven module metadata to support dynamic version constraints - Resolve snapshot versions and generate snapshot metadata - Add test fixtures and rewrite Gradle plugin tests - Update dependencies --- app/build.gradle.kts | 3 - .../compileClasspath.lockfile | 22 +- .../runtimeClasspath.lockfile | 23 +- .../testCompileClasspath.lockfile | 22 +- .../testRuntimeClasspath.lockfile | 23 +- app/src/dist/share/gradle-env.nix | 187 +- .../main/kotlin/org/nixos/gradle2nix/Env.kt | 68 +- .../org/nixos/gradle2nix/GradleRunner.kt | 2 + .../kotlin/org/nixos/gradle2nix/Logger.kt | 3 +- .../main/kotlin/org/nixos/gradle2nix/Main.kt | 23 +- build.gradle.kts | 11 +- .../basic-java-project/groovy/build.gradle | 13 + .../kotlin/build.gradle.kts | 13 + .../dependency/classifier/groovy/build.gradle | 11 + .../classifier/kotlin/build.gradle.kts | 11 + .../dynamic-snapshot/groovy/build.gradle | 12 + .../dependency/snapshot/groovy/build.gradle | 12 + .../snapshot/kotlin/build.gradle.kts | 12 + fixtures/ivy/basic/kotlin/build.gradle.kts | 20 + .../groovy/build.gradle | 7 + .../kotlin/build.gradle.kts | 7 + .../dependent-subprojects/groovy/build.gradle | 15 + .../groovy/child-a/build.gradle | 0 .../groovy/child-b/build.gradle | 0 .../groovy/child-c/build.gradle | 0 .../groovy/child-d/build.gradle | 0 .../groovy/settings.gradle | 1 + .../multi-module/groovy/build.gradle | 13 + .../multi-module/groovy/child-a/build.gradle | 7 + .../multi-module/groovy/child-b/build.gradle | 8 + .../multi-module/groovy/settings.gradle | 1 + .../multi-module/kotlin/build.gradle.kts | 13 + .../kotlin/child-a/build.gradle.kts | 7 + .../kotlin/child-b/build.gradle.kts | 8 + .../multi-module/kotlin/settings.gradle.kts | 1 + gradle-env.json | 5114 +++++++++++------ gradle-env.nix | 187 +- gradle.properties | 3 + gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 58695 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 29 +- model/build.gradle.kts | 6 +- .../compileClasspath.lockfile | 15 +- .../runtimeClasspath.lockfile | 8 +- .../testCompileClasspath.lockfile | 15 +- .../testRuntimeClasspath.lockfile | 15 +- .../main/kotlin/org/nixos/gradle2nix/Impl.kt | 114 +- .../main/kotlin/org/nixos/gradle2nix/Model.kt | 39 +- plugin/.stutter/java11.lock | 4 +- plugin/.stutter/java8.lock | 4 +- plugin/build.gradle.kts | 24 +- .../buildscript-classpath.lockfile | 49 +- .../compatTestCompileClasspath.lockfile | 33 +- .../compatTestRuntimeClasspath.lockfile | 42 +- .../compileClasspath.lockfile | 26 +- .../runtimeClasspath.lockfile | 18 +- .../testCompileClasspath.lockfile | 24 +- .../testRuntimeClasspath.lockfile | 25 +- .../kotlin/org/nixos/gradle2nix/BasicTest.kt | 130 +- .../org/nixos/gradle2nix/DependencyTest.kt | 69 + .../kotlin/org/nixos/gradle2nix/IvyTest.kt | 33 + .../kotlin/org/nixos/gradle2nix/PluginTest.kt | 21 + .../org/nixos/gradle2nix/SubprojectsTest.kt | 550 +- .../kotlin/org/nixos/gradle2nix/TestUtil.kt | 145 +- .../org/nixos/gradle2nix/WrapperTest.kt | 31 +- .../nixos/gradle2nix/ConfigurationResolver.kt | 255 + .../nixos/gradle2nix/DependencyResolver.kt | 169 - .../org/nixos/gradle2nix/Gradle2NixPlugin.kt | 109 +- .../org/nixos/gradle2nix/ModelProperties.kt | 1 - .../org/nixos/gradle2nix/PluginResolver.kt | 102 +- .../nixos/gradle2nix/RepositoryResolver.kt | 212 + .../main/kotlin/org/nixos/gradle2nix/Util.kt | 21 + 72 files changed, 5163 insertions(+), 3060 deletions(-) create mode 100644 fixtures/basic/basic-java-project/groovy/build.gradle create mode 100644 fixtures/basic/basic-java-project/kotlin/build.gradle.kts create mode 100644 fixtures/dependency/classifier/groovy/build.gradle create mode 100644 fixtures/dependency/classifier/kotlin/build.gradle.kts create mode 100644 fixtures/dependency/dynamic-snapshot/groovy/build.gradle create mode 100644 fixtures/dependency/snapshot/groovy/build.gradle create mode 100644 fixtures/dependency/snapshot/kotlin/build.gradle.kts create mode 100644 fixtures/ivy/basic/kotlin/build.gradle.kts create mode 100644 fixtures/plugin/resolves-from-default-repo/groovy/build.gradle create mode 100644 fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/build.gradle create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/child-a/build.gradle create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/child-b/build.gradle create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/child-c/build.gradle create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/child-d/build.gradle create mode 100644 fixtures/subprojects/dependent-subprojects/groovy/settings.gradle create mode 100644 fixtures/subprojects/multi-module/groovy/build.gradle create mode 100644 fixtures/subprojects/multi-module/groovy/child-a/build.gradle create mode 100644 fixtures/subprojects/multi-module/groovy/child-b/build.gradle create mode 100644 fixtures/subprojects/multi-module/groovy/settings.gradle create mode 100644 fixtures/subprojects/multi-module/kotlin/build.gradle.kts create mode 100644 fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts create mode 100644 fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts create mode 100644 fixtures/subprojects/multi-module/kotlin/settings.gradle.kts create mode 100644 gradle.properties create mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt create mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt create mode 100644 plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt delete mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyResolver.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt create mode 100644 plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bf23e2d..02e92a7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,9 +6,6 @@ plugins { application } -group = "org.nixos" -version = "1.0.0-SNAPSHOT" - dependencies { implementation(project(":model")) implementation(kotlin("stdlib-jdk8")) diff --git a/app/gradle/dependency-locks/compileClasspath.lockfile b/app/gradle/dependency-locks/compileClasspath.lockfile index aa1151c..5da6e55 100644 --- a/app/gradle/dependency-locks/compileClasspath.lockfile +++ b/app/gradle/dependency-locks/compileClasspath.lockfile @@ -1,16 +1,16 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ajalt:clikt:2.2.0 -com.squareup.moshi:moshi-adapters:1.9.1 -com.squareup.moshi:moshi-kotlin:1.9.1 -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.gradle:gradle-tooling-api:5.6.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.github.ajalt:clikt:2.3.0 +com.squareup.moshi:moshi-adapters:1.9.2 +com.squareup.moshi:moshi-kotlin:1.9.2 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +org.gradle:gradle-tooling-api:6.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 org.slf4j:slf4j-api:2.0.0-alpha1 diff --git a/app/gradle/dependency-locks/runtimeClasspath.lockfile b/app/gradle/dependency-locks/runtimeClasspath.lockfile index 4d7b4f5..daf70f5 100644 --- a/app/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/app/gradle/dependency-locks/runtimeClasspath.lockfile @@ -1,17 +1,18 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ajalt:clikt:2.2.0 -com.squareup.moshi:moshi-adapters:1.9.1 -com.squareup.moshi:moshi-kotlin:1.9.1 -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.gradle:gradle-tooling-api:5.6.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.github.ajalt:clikt:2.3.0 +com.squareup.moshi:moshi-adapters:1.9.2 +com.squareup.moshi:moshi-kotlin:1.9.2 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +net.swiftzer.semver:semver:1.1.1 +org.gradle:gradle-tooling-api:6.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 org.slf4j:slf4j-api:2.0.0-alpha1 org.slf4j:slf4j-simple:2.0.0-alpha1 diff --git a/app/gradle/dependency-locks/testCompileClasspath.lockfile b/app/gradle/dependency-locks/testCompileClasspath.lockfile index aa1151c..5da6e55 100644 --- a/app/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/app/gradle/dependency-locks/testCompileClasspath.lockfile @@ -1,16 +1,16 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ajalt:clikt:2.2.0 -com.squareup.moshi:moshi-adapters:1.9.1 -com.squareup.moshi:moshi-kotlin:1.9.1 -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.gradle:gradle-tooling-api:5.6.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.github.ajalt:clikt:2.3.0 +com.squareup.moshi:moshi-adapters:1.9.2 +com.squareup.moshi:moshi-kotlin:1.9.2 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +org.gradle:gradle-tooling-api:6.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 org.slf4j:slf4j-api:2.0.0-alpha1 diff --git a/app/gradle/dependency-locks/testRuntimeClasspath.lockfile b/app/gradle/dependency-locks/testRuntimeClasspath.lockfile index 4d7b4f5..daf70f5 100644 --- a/app/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/app/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -1,17 +1,18 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.github.ajalt:clikt:2.2.0 -com.squareup.moshi:moshi-adapters:1.9.1 -com.squareup.moshi:moshi-kotlin:1.9.1 -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.gradle:gradle-tooling-api:5.6.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.github.ajalt:clikt:2.3.0 +com.squareup.moshi:moshi-adapters:1.9.2 +com.squareup.moshi:moshi-kotlin:1.9.2 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +net.swiftzer.semver:semver:1.1.1 +org.gradle:gradle-tooling-api:6.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 org.slf4j:slf4j-api:2.0.0-alpha1 org.slf4j:slf4j-simple:2.0.0-alpha1 diff --git a/app/src/dist/share/gradle-env.nix b/app/src/dist/share/gradle-env.nix index 91b01cd..9c8c076 100644 --- a/app/src/dist/share/gradle-env.nix +++ b/app/src/dist/share/gradle-env.nix @@ -19,7 +19,7 @@ # ''; # } -{ stdenv, lib, buildEnv, fetchurl, gradleGen, writeText }: +{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }: { envSpec , pname ? null @@ -27,9 +27,18 @@ , enableParallelBuilding ? true , gradleFlags ? [ "build" ] , gradlePackage ? null +, enableDebug ? false , ... } @ args: let + inherit (builtins) + filter sort replaceStrings attrValues match fromJSON + concatStringsSep; + + inherit (stdenv.lib) + versionOlder unique mapAttrs last concatMapStringsSep removeSuffix + optionalString groupBy' readFile hasSuffix; + mkDep = depSpec: stdenv.mkDerivation { inherit (depSpec) name; @@ -41,40 +50,171 @@ let installPhase = '' mkdir -p $out/${depSpec.path} - ln -s $src $out/${depSpec.path}/${depSpec.filename} + ln -s $src $out/${depSpec.path}/${depSpec.name} ''; }; + mkModuleMetadata = deps: + let + ids = filter + (id: id.type == "pom") + (map (dep: dep.id) deps); + + modules = groupBy' + (meta: id: + let + isNewer = versionOlder meta.latest id.version; + isNewerRelease = + !(hasSuffix "-SNAPSHOT" id.version) && + versionOlder meta.release id.version; + in { + groupId = id.group; + artifactId = id.name; + latest = if isNewer then id.version else meta.latest; + release = if isNewerRelease then id.version else meta.release; + versions = meta.versions ++ [id.version]; + } + ) + { + latest = ""; + release = ""; + versions = []; + } + (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") + ids; + + in + attrValues (mapAttrs (path: meta: + let + versions' = sort versionOlder (unique meta.versions); + in + with meta; writeTextDir path '' + + + ${groupId} + ${artifactId} + + ${optionalString (latest != "") "${latest}"} + ${optionalString (release != "") "${release}"} + + ${concatMapStringsSep "\n " (v: "${v}") versions'} + + + + '' + ) modules); + + mkSnapshotMetadata = deps: + let + snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; + + modules = groupBy' + (meta: dep: + let + id = dep.id; + isNewer = dep.build > meta.buildNumber; + # Timestamp values can be bogus, e.g. jitpack.io + updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null + then replaceStrings ["."] [""] dep.timestamp + else ""; + in { + groupId = id.group; + artifactId = id.name; + version = id.version; + timestamp = if isNewer then dep.timestamp else meta.timestamp; + buildNumber = if isNewer then dep.build else meta.buildNumber; + lastUpdated = if isNewer then updated else meta.lastUpdated; + versions = meta.versions or [] ++ [{ + classifier = id.classifier or ""; + extension = id.extension; + value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; + updated = updated; + }]; + } + ) + { + timestamp = ""; + buildNumber = -1; + lastUpdated = ""; + } + (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") + snapshotDeps; + + mkSnapshotVersion = version: '' + + ${optionalString (version.classifier != "") "${version.classifier}"} + ${version.extension} + ${version.value} + ${optionalString (version.updated != "") "${version.updated}"} + + ''; + + in + attrValues (mapAttrs (path: meta: + with meta; writeTextDir path '' + + + ${groupId} + ${artifactId} + ${version} + + + ${optionalString (timestamp != "") "${timestamp}"} + ${optionalString (buildNumber != -1) "${toString buildNumber}"} + + ${optionalString (lastUpdated != "") "${lastUpdated}"} + + ${concatMapStringsSep "\n " mkSnapshotVersion versions} + + + + '' + ) modules); + mkRepo = project: type: deps: buildEnv { name = "${project}-gradle-${type}-env"; - paths = map mkDep deps; + paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; }; mkInitScript = projectSpec: let - repos = builtins.mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; + repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; in writeText "init.gradle" '' + static def offlineRepo(RepositoryHandler repositories, String env, String path) { + repositories.clear() + repositories.maven { + name "Nix''${env.capitalize()}MavenOffline" + url path + metadataSources { + it.gradleMetadata() + it.mavenPom() + it.artifact() + } + } + repositories.ivy { + name "Nix''${env.capitalize()}IvyOffline" + url path + layout "maven" + metadataSources { + it.gradleMetadata() + it.ivyDescriptor() + it.artifact() + } + } + } + gradle.settingsEvaluated { - it.pluginManagement.repositories { - clear() - maven { url = uri("${repos.plugin}") } - } + offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") } gradle.projectsLoaded { - allprojects { - buildscript { - repositories { - clear() - maven { url = uri("${repos.buildscript}") } - } + allprojects { + buildscript { + offlineRepo(repositories, "buildscript", "${repos.buildscript}") + } + offlineRepo(repositories, "project", "${repos.project}") } - repositories { - clear() - maven { url = uri("${repos.project}") } - } - } } ''; @@ -95,9 +235,9 @@ let gradle = args.gradlePackage or mkGradle projectSpec.gradle; }; - gradleEnv = builtins.mapAttrs + gradleEnv = mapAttrs (_: p: mkProjectEnv p) - (builtins.fromJSON (builtins.readFile envSpec)); + (fromJSON (readFile envSpec)); projectEnv = gradleEnv.""; pname = args.pname or projectEnv.name; @@ -118,9 +258,10 @@ in stdenv.mkDerivation (args // { "GRADLE_USER_HOME=$(mktemp -d)" \ gradle --offline --no-daemon --no-build-cache \ --info --full-stacktrace --warning-mode=all \ - ${lib.optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ --init-script ${projectEnv.initScript} \ - ${builtins.concatStringsSep " " gradleFlags} + ${concatStringsSep " " gradleFlags} ) runHook postBuild diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt index 7912ef4..18ef9e0 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Env.kt @@ -8,16 +8,7 @@ data class NixGradleEnv( val version: String, val path: String, val gradle: DefaultGradle, - val dependencies: Map> -) - -@JsonClass(generateAdapter = true) -data class Dependency( - val name: String, - val filename: String, - val path: String, - val urls: List, - val sha256: String + val dependencies: Map> ) fun buildEnv(builds: Map): Map = @@ -28,58 +19,31 @@ fun buildEnv(builds: Map): Map = path = path, gradle = build.gradle, dependencies = mapOf( - "plugin" to buildRepo(build.pluginDependencies).values.toList(), - "buildscript" to build.rootProject.collectDependencies(DefaultProject::buildscriptDependencies) - .values.toList(), + "plugin" to build.pluginDependencies, + "buildscript" to build.rootProject.collectDependencies(DefaultProject::buildscriptDependencies), "project" to build.rootProject.collectDependencies(DefaultProject::projectDependencies) - .values.toList() ) ) } -private fun DefaultProject.collectDependencies(chooser: DefaultProject.() -> DefaultDependencies): Map { - val result = mutableMapOf() - mergeRepo(result, buildRepo(chooser())) +private fun DefaultProject.collectDependencies( + chooser: DefaultProject.() -> List +): List { + val result = mutableMapOf() + mergeRepo(result, chooser()) for (child in children) { mergeRepo(result, child.collectDependencies(chooser)) } - return result + return result.values.toList() } -private fun buildRepo(deps: DefaultDependencies): Map = - deps.artifacts.associate { artifact -> - val name = with(artifact) { - buildString { - append("$groupId-$artifactId-$version") - if (classifier.isNotEmpty()) append("-$classifier") - append("-$extension") - replace(Regex("[^A-Za-z0-9+\\-._?=]"), "_") - } - } - val filename = with(artifact) { - buildString { - append("$artifactId-$version") - if (classifier.isNotEmpty()) append("-$classifier") - append(".$extension") - } - } - val path = with(artifact) { "${groupId.replace(".", "/")}/$artifactId/$version" } - val dep = Dependency( - name = name, - filename = filename, - path = path, - urls = deps.repositories.maven.flatMap { repo -> - repo.urls.map { "${it.removeSuffix("/")}/$path/$filename" } - }, - sha256 = artifact.sha256 - ) - artifact to dep - } - -private fun mergeRepo(base: MutableMap, extra: Map) { - extra.forEach { (artifact, dep) -> - base.merge(artifact, dep) { old, new -> - old.copy(urls = old.urls + (new.urls - old.urls)) +private fun mergeRepo( + base: MutableMap, + extra: List +) { + extra.forEach { artifact -> + base.merge(artifact.id, artifact) { old, new -> + old.copy(urls = old.urls.union(new.urls).toList()) } } } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt index c064be7..602a7f6 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/GradleRunner.kt @@ -21,8 +21,10 @@ fun ProjectConnection.getBuildModel(config: Config, path: String): DefaultBuild "-Porg.nixos.gradle2nix.configurations=${config.configurations.joinToString(",")}", "-Porg.nixos.gradle2nix.subprojects=${config.subprojects.joinToString(",")}" ) + if (config.gradleArgs != null) addArguments(config.gradleArgs) if (path.isNotEmpty()) addArguments("--project-dir=$path") if (!config.quiet) { + setColorOutput(true) setStandardOutput(System.err) setStandardError(System.err) } diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt index eca8b32..949249a 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Logger.kt @@ -4,7 +4,8 @@ import java.io.PrintStream class Logger( val out: PrintStream = System.err, - val verbose: Boolean) { + val verbose: Boolean +) { val log: (String) -> Unit = { if (verbose) out.println(it) } val warn: (String) -> Unit = { out.println("Warning: $it")} diff --git a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt index b1e7d23..797b3f6 100644 --- a/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt +++ b/app/src/main/kotlin/org/nixos/gradle2nix/Main.kt @@ -8,7 +8,12 @@ import com.github.ajalt.clikt.parameters.arguments.ProcessedArgument import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.convert import com.github.ajalt.clikt.parameters.arguments.default -import com.github.ajalt.clikt.parameters.options.* +import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.options.flag +import com.github.ajalt.clikt.parameters.options.multiple +import com.github.ajalt.clikt.parameters.options.option +import com.github.ajalt.clikt.parameters.options.split +import com.github.ajalt.clikt.parameters.options.validate import com.github.ajalt.clikt.parameters.types.file import com.squareup.moshi.Moshi import com.squareup.moshi.Types @@ -20,6 +25,7 @@ val shareDir: String = System.getProperty("org.nixos.gradle2nix.share") data class Config( val gradleVersion: String?, + val gradleArgs: String?, val configurations: List, val projectDir: File, val includes: List, @@ -37,6 +43,10 @@ class Main : CliktCommand( metavar = "VERSION", help = "Use a specific Gradle version") + private val gradleArgs: String? by option("--gradle-args", "-a", + metavar = "ARGS", + help = "Extra arguments to pass to Gradle") + private val configurations: List by option("--configuration", "-c", metavar = "NAME", help = "Add a configuration to resolve (default: all configurations)") @@ -96,7 +106,16 @@ class Main : CliktCommand( } override fun run() { - val config = Config(gradleVersion, configurations, projectDir, includes, subprojects, buildSrc, quiet) + val config = Config( + gradleVersion, + gradleArgs, + configurations, + projectDir, + includes, + subprojects, + buildSrc, + quiet + ) val (log, _, _) = Logger(verbose = !config.quiet) val paths = resolveProjects(config).map { p -> diff --git a/build.gradle.kts b/build.gradle.kts index b593d40..0c5440c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,15 +3,20 @@ plugins { idea kotlin("jvm") version embeddedKotlinVersion apply false kotlin("kapt") version embeddedKotlinVersion apply false - id("com.github.johnrengelman.shadow") version "5.1.0" apply false - id("org.ajoberstar.stutter") version "0.5.0" apply false + id("com.github.johnrengelman.shadow") version "5.2.0" apply false + id("org.ajoberstar.stutter") version "0.5.1" apply false } +group = "org.nixos.gradle2nix" +version = property("VERSION") ?: "unspecified" + subprojects { repositories { jcenter() maven { url = uri("https://repo.gradle.org/gradle/libs-releases") } } + group = rootProject.group + version = rootProject.version } allprojects { @@ -45,7 +50,7 @@ allprojects { tasks { wrapper { - gradleVersion = "5.6.3" + gradleVersion = "6.1" distributionType = Wrapper.DistributionType.ALL } } diff --git a/fixtures/basic/basic-java-project/groovy/build.gradle b/fixtures/basic/basic-java-project/groovy/build.gradle new file mode 100644 index 0000000..e0f793a --- /dev/null +++ b/fixtures/basic/basic-java-project/groovy/build.gradle @@ -0,0 +1,13 @@ +plugins { + id 'java' +} + +repositories { + jcenter() + mavenCentral() +} + +dependencies { + implementation 'com.squareup.okio:okio:2.2.2' + implementation 'com.squareup.moshi:moshi:1.8.0' +} diff --git a/fixtures/basic/basic-java-project/kotlin/build.gradle.kts b/fixtures/basic/basic-java-project/kotlin/build.gradle.kts new file mode 100644 index 0000000..59670f1 --- /dev/null +++ b/fixtures/basic/basic-java-project/kotlin/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + java +} + +repositories { + jcenter() + mavenCentral() +} + +dependencies { + implementation("com.squareup.okio:okio:2.2.2") + implementation("com.squareup.moshi:moshi:1.8.0") +} diff --git a/fixtures/dependency/classifier/groovy/build.gradle b/fixtures/dependency/classifier/groovy/build.gradle new file mode 100644 index 0000000..d3889d4 --- /dev/null +++ b/fixtures/dependency/classifier/groovy/build.gradle @@ -0,0 +1,11 @@ +plugins { + id 'java' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop' +} \ No newline at end of file diff --git a/fixtures/dependency/classifier/kotlin/build.gradle.kts b/fixtures/dependency/classifier/kotlin/build.gradle.kts new file mode 100644 index 0000000..e195487 --- /dev/null +++ b/fixtures/dependency/classifier/kotlin/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + java +} + +repositories { + mavenCentral() +} + +dependencies { + implementation("com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop") +} \ No newline at end of file diff --git a/fixtures/dependency/dynamic-snapshot/groovy/build.gradle b/fixtures/dependency/dynamic-snapshot/groovy/build.gradle new file mode 100644 index 0000000..a2a9953 --- /dev/null +++ b/fixtures/dependency/dynamic-snapshot/groovy/build.gradle @@ -0,0 +1,12 @@ +plugins { + id 'java' +} + +repositories { + jcenter() + maven { url 'https://jitpack.io' } +} + +dependencies { + implementation 'com.github.anuken:packr:-SNAPSHOT' +} \ No newline at end of file diff --git a/fixtures/dependency/snapshot/groovy/build.gradle b/fixtures/dependency/snapshot/groovy/build.gradle new file mode 100644 index 0000000..3c75776 --- /dev/null +++ b/fixtures/dependency/snapshot/groovy/build.gradle @@ -0,0 +1,12 @@ +plugins { + id "java" +} + +repositories { + mavenCentral() + maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } +} + +dependencies { + implementation "com.squareup.okio:okio:2.5.0-SNAPSHOT" +} \ No newline at end of file diff --git a/fixtures/dependency/snapshot/kotlin/build.gradle.kts b/fixtures/dependency/snapshot/kotlin/build.gradle.kts new file mode 100644 index 0000000..fa5622d --- /dev/null +++ b/fixtures/dependency/snapshot/kotlin/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + java +} + +repositories { + mavenCentral() + maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") } +} + +dependencies { + "implementation"("com.squareup.okio:okio:2.5.0-SNAPSHOT") +} diff --git a/fixtures/ivy/basic/kotlin/build.gradle.kts b/fixtures/ivy/basic/kotlin/build.gradle.kts new file mode 100644 index 0000000..871283a --- /dev/null +++ b/fixtures/ivy/basic/kotlin/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + java +} + +repositories { + ivy { + url = uri("https://asset.opendof.org") + layout("pattern") { + this as IvyPatternRepositoryLayout + ivy("ivy2/[organisation]/[module]/[revision]/ivy(.[platform]).xml") + artifact("artifact/[organisation]/[module]/[revision](/[platform])(/[type]s)/[artifact]-[revision](-[classifier]).[ext]") + } + } +} + +dependencies { + dependencies { + implementation("org.opendof.core-java:dof-cipher-sms4:1.0") + } +} \ No newline at end of file diff --git a/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle b/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle new file mode 100644 index 0000000..029a04c --- /dev/null +++ b/fixtures/plugin/resolves-from-default-repo/groovy/build.gradle @@ -0,0 +1,7 @@ +plugins { + id "org.jetbrains.kotlin.jvm" version "1.3.50" +} + +repositories { + jcenter() +} diff --git a/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts b/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts new file mode 100644 index 0000000..b4bfb93 --- /dev/null +++ b/fixtures/plugin/resolves-from-default-repo/kotlin/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("jvm") version "1.3.50" +} + +repositories { + jcenter() +} diff --git a/fixtures/subprojects/dependent-subprojects/groovy/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/build.gradle new file mode 100644 index 0000000..f924346 --- /dev/null +++ b/fixtures/subprojects/dependent-subprojects/groovy/build.gradle @@ -0,0 +1,15 @@ +subprojects { + apply plugin: 'java' +} + +project(':child-a') { + dependencies { + implementation project(':child-b') + } +} + +project(':child-b') { + dependencies { + implementation project(':child-c') + } +} \ No newline at end of file diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-a/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/child-a/build.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-b/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/child-b/build.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-c/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/child-c/build.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/subprojects/dependent-subprojects/groovy/child-d/build.gradle b/fixtures/subprojects/dependent-subprojects/groovy/child-d/build.gradle new file mode 100644 index 0000000..e69de29 diff --git a/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle b/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle new file mode 100644 index 0000000..e7cf411 --- /dev/null +++ b/fixtures/subprojects/dependent-subprojects/groovy/settings.gradle @@ -0,0 +1 @@ +include ':child-a', ':child-b', ':child-c', ':child-d' \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/groovy/build.gradle b/fixtures/subprojects/multi-module/groovy/build.gradle new file mode 100644 index 0000000..91d2f34 --- /dev/null +++ b/fixtures/subprojects/multi-module/groovy/build.gradle @@ -0,0 +1,13 @@ +plugins { + id 'java' +} + +allprojects { + repositories { + jcenter() + } +} + +dependencies { + testImplementation 'junit:junit:4.12' +} \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/groovy/child-a/build.gradle b/fixtures/subprojects/multi-module/groovy/child-a/build.gradle new file mode 100644 index 0000000..2fed971 --- /dev/null +++ b/fixtures/subprojects/multi-module/groovy/child-a/build.gradle @@ -0,0 +1,7 @@ +plugins { + id 'java' +} + +dependencies { + implementation 'com.squareup.okio:okio:2.2.2' +} \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/groovy/child-b/build.gradle b/fixtures/subprojects/multi-module/groovy/child-b/build.gradle new file mode 100644 index 0000000..3c41b0a --- /dev/null +++ b/fixtures/subprojects/multi-module/groovy/child-b/build.gradle @@ -0,0 +1,8 @@ +plugins { + id 'java' +} + +dependencies { + implementation project(':child-a') + implementation 'com.squareup.moshi:moshi:1.8.0' +} \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/groovy/settings.gradle b/fixtures/subprojects/multi-module/groovy/settings.gradle new file mode 100644 index 0000000..188b990 --- /dev/null +++ b/fixtures/subprojects/multi-module/groovy/settings.gradle @@ -0,0 +1 @@ +include ':child-a', ':child-b' \ No newline at end of file diff --git a/fixtures/subprojects/multi-module/kotlin/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/build.gradle.kts new file mode 100644 index 0000000..ba82c83 --- /dev/null +++ b/fixtures/subprojects/multi-module/kotlin/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + java +} + +allprojects { + repositories { + jcenter() + } +} + +dependencies { + testImplementation("junit:junit:4.12") +} diff --git a/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts new file mode 100644 index 0000000..b98236a --- /dev/null +++ b/fixtures/subprojects/multi-module/kotlin/child-a/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + java +} + +dependencies { + implementation("com.squareup.okio:okio:2.2.2") +} diff --git a/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts b/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts new file mode 100644 index 0000000..7b27bde --- /dev/null +++ b/fixtures/subprojects/multi-module/kotlin/child-b/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + java +} + +dependencies { + implementation(project(":child-a")) + implementation("com.squareup.moshi:moshi:1.8.0") +} diff --git a/fixtures/subprojects/multi-module/kotlin/settings.gradle.kts b/fixtures/subprojects/multi-module/kotlin/settings.gradle.kts new file mode 100644 index 0000000..746f7ca --- /dev/null +++ b/fixtures/subprojects/multi-module/kotlin/settings.gradle.kts @@ -0,0 +1 @@ +include(":child-a", ":child-b") \ No newline at end of file diff --git a/gradle-env.json b/gradle-env.json index fe2086a..197f319 100644 --- a/gradle-env.json +++ b/gradle-env.json @@ -1,164 +1,221 @@ { "": { "name": "gradle2nix", - "version": "unspecified", + "version": "1.0.0-rc1", "path": "", "gradle": { - "version": "5.6.3", + "version": "6.1", "type": "all", - "url": "https://services.gradle.org/distributions/gradle-5.6.3-all.zip", - "sha256": "342f8e75a8879fa9192163fa8d932b9f6383ea00c1918a478f0f51e11e004b60", - "nativeVersion": "0.18" + "url": "https://services.gradle.org/distributions/gradle-6.1-all.zip", + "sha256": "634f972af958e3c753aeb42d7a688fab6820b527a0aef9eed03d7f3f6f9c7c06", + "nativeVersion": "0.19" }, "dependencies": { "plugin": [ { - "name": "com.fasterxml.jackson.core-jackson-annotations-2.9.0-jar", - "filename": "jackson-annotations-2.9.0.jar", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.9.0", + "id": { + "group": "com.fasterxml", + "name": "oss-parent", + "version": "38", + "type": "pom", + "extension": "pom" + }, + "name": "oss-parent-38.pom", + "path": "com/fasterxml/oss-parent/38", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar" + "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/38/oss-parent-38.pom" ], - "sha256": "45d32ac61ef8a744b464c54c2b3414be571016dd46bfc2bec226761cf7ae457a" + "sha256": "c83f8f45dfdca8d0b6b3661c60b3f84780f671b12e06f91ad5d1c1a1d1f966e8" }, { - "name": "com.fasterxml.jackson.core-jackson-annotations-2.9.0-pom", - "filename": "jackson-annotations-2.9.0.pom", - "path": "com/fasterxml/jackson/core/jackson-annotations/2.9.0", + "id": { + "group": "com.fasterxml.jackson", + "name": "jackson-base", + "version": "2.10.2", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-base-2.10.2.pom", + "path": "com/fasterxml/jackson/jackson-base/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-base/2.10.2/jackson-base-2.10.2.pom" ], - "sha256": "edeb9d9bfca726b441bfae09b69d94b5db99cd5a9da5f4a061b90e72b640905c" + "sha256": "7e3ef56ce1edbb723f7fc3712f6c8689f4bc06f564125c75a6d658d023bdec56" }, { - "name": "com.fasterxml.jackson.core-jackson-core-2.9.8-jar", - "filename": "jackson-core-2.9.8.jar", - "path": "com/fasterxml/jackson/core/jackson-core/2.9.8", + "id": { + "group": "com.fasterxml.jackson", + "name": "jackson-bom", + "version": "2.10.2", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-bom-2.10.2.pom", + "path": "com/fasterxml/jackson/jackson-bom/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.jar" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.10.2/jackson-bom-2.10.2.pom" ], - "sha256": "d934dab0bd48994eeea2c1b493cb547158a338a80b58c4fbc8e85fb0905e105f" + "sha256": "a250e4a602054dfaf9ee9655afb7d603539226c97327bf237ecd8b3e172eb90f" }, { - "name": "com.fasterxml.jackson.core-jackson-core-2.9.8-pom", - "filename": "jackson-core-2.9.8.pom", - "path": "com/fasterxml/jackson/core/jackson-core/2.9.8", + "id": { + "group": "com.fasterxml.jackson", + "name": "jackson-parent", + "version": "2.10", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-parent-2.10.pom", + "path": "com/fasterxml/jackson/jackson-parent/2.10", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.10/jackson-parent-2.10.pom" ], - "sha256": "956d42cfdb8465531bcfa9974a36c57944c7542e37aaee881413370c3190031f" + "sha256": "a50db80829c4f897c6d0e7e95472cbb43b0ebece135a68e39c27b8a6fe33e481" }, { - "name": "com.fasterxml.jackson.core-jackson-databind-2.9.8-jar", - "filename": "jackson-databind-2.9.8.jar", - "path": "com/fasterxml/jackson/core/jackson-databind/2.9.8", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-annotations", + "version": "2.10.2", + "type": "jar", + "extension": "jar" + }, + "name": "jackson-annotations-2.10.2.jar", + "path": "com/fasterxml/jackson/core/jackson-annotations/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.jar" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.10.2/jackson-annotations-2.10.2.jar" ], - "sha256": "2351c3eba73a545db9079f5d6d768347ad72666537362c8220fe3e950a55a864" + "sha256": "8c3cba89bf3e03b35a0e6f892c2eb17ed8fdde2e214c3a4c18703d63796bae46" }, { - "name": "com.fasterxml.jackson.core-jackson-databind-2.9.8-pom", - "filename": "jackson-databind-2.9.8.pom", - "path": "com/fasterxml/jackson/core/jackson-databind/2.9.8", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-annotations", + "version": "2.10.2", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-annotations-2.10.2.pom", + "path": "com/fasterxml/jackson/core/jackson-annotations/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.10.2/jackson-annotations-2.10.2.pom" ], - "sha256": "90e39a0ce673add76a71fa20193c0c0670237ab43b2a625ecdf569c676d11bd9" + "sha256": "7f64965efd25dbc10791e90735b6636deb787cd718d302e0906e54aa7adec3ea" }, { - "name": "com.fasterxml.jackson-jackson-base-2.9.8-pom", - "filename": "jackson-base-2.9.8.pom", - "path": "com/fasterxml/jackson/jackson-base/2.9.8", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-core", + "version": "2.10.2", + "type": "jar", + "extension": "jar" + }, + "name": "jackson-core-2.10.2.jar", + "path": "com/fasterxml/jackson/core/jackson-core/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-base/2.9.8/jackson-base-2.9.8.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.10.2/jackson-core-2.10.2.jar" ], - "sha256": "691d53065da1b522beaf0fd0d13226df56c4edbba6aa69b657cbe1a7ef496223" + "sha256": "4c41f22a48f6ebb28752baeb6d25bf09ba4ff0ad8bfb82650dde448928b9da4f" }, { - "name": "com.fasterxml.jackson-jackson-bom-2.9.8-pom", - "filename": "jackson-bom-2.9.8.pom", - "path": "com/fasterxml/jackson/jackson-bom/2.9.8", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-core", + "version": "2.10.2", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-core-2.10.2.pom", + "path": "com/fasterxml/jackson/core/jackson-core/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.9.8/jackson-bom-2.9.8.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.10.2/jackson-core-2.10.2.pom" ], - "sha256": "fbee567358aa7b6a10a0b59c75a11adfdb128a3a7ddc4f409ea7109b34b451f9" + "sha256": "325a3c94d924af0f6ceacca40e9e887a188864c153f9fc34ce9c4f013da8828e" }, { - "name": "com.fasterxml.jackson-jackson-parent-2.9.0-pom", - "filename": "jackson-parent-2.9.0.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.9.0", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-databind", + "version": "2.10.2", + "type": "jar", + "extension": "jar" + }, + "name": "jackson-databind-2.10.2.jar", + "path": "com/fasterxml/jackson/core/jackson-databind/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.9.0/jackson-parent-2.9.0.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.10.2/jackson-databind-2.10.2.jar" ], - "sha256": "000508b61dd124387e58199fb9e2113c1b5d8b386c5bf7a891b2de6041eb1d52" + "sha256": "42c25644e35fadfbded1b7f35a8d1e70a86737f190e43aa2c56cea4b96cbda88" }, { - "name": "com.fasterxml.jackson-jackson-parent-2.9.1.2-pom", - "filename": "jackson-parent-2.9.1.2.pom", - "path": "com/fasterxml/jackson/jackson-parent/2.9.1.2", + "id": { + "group": "com.fasterxml.jackson.core", + "name": "jackson-databind", + "version": "2.10.2", + "type": "pom", + "extension": "pom" + }, + "name": "jackson-databind-2.10.2.pom", + "path": "com/fasterxml/jackson/core/jackson-databind/2.10.2", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.9.1.2/jackson-parent-2.9.1.2.pom" + "https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.10.2/jackson-databind-2.10.2.pom" ], - "sha256": "9517e405c6b3b8a035215ad5727013a3519eb7591743fe1dcc04df6635683cf9" + "sha256": "64f8800dfe5b9b608ed47a74df73c4c2445a8916ba6bfa2cfbb70181f2130178" }, { - "name": "com.fasterxml-oss-parent-28-pom", - "filename": "oss-parent-28.pom", - "path": "com/fasterxml/oss-parent/28", + "id": { + "group": "com.github.jengelman.gradle.plugins", + "name": "shadow", + "version": "5.2.0", + "type": "jar", + "extension": "jar" + }, + "name": "shadow-5.2.0.jar", + "path": "com/github/jengelman/gradle/plugins/shadow/5.2.0", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/28/oss-parent-28.pom" + "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/5.2.0/shadow-5.2.0.jar" ], - "sha256": "c4c369e36b8820ad26d2e6c70ff44ad99efafe19399a5d1178e9ea82f4d2fd38" + "sha256": "b748da66d6f11acef435e1f2e95151dab902bb2de23fc8af575b86237d6ba6c8" }, { - "name": "com.fasterxml-oss-parent-34-pom", - "filename": "oss-parent-34.pom", - "path": "com/fasterxml/oss-parent/34", + "id": { + "group": "com.github.jengelman.gradle.plugins", + "name": "shadow", + "version": "5.2.0", + "type": "pom", + "extension": "pom" + }, + "name": "shadow-5.2.0.pom", + "path": "com/github/jengelman/gradle/plugins/shadow/5.2.0", "urls": [ - "https://plugins.gradle.org/m2/com/fasterxml/oss-parent/34/oss-parent-34.pom" + "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/5.2.0/shadow-5.2.0.pom" ], - "sha256": "9a75f3e32bf9d6e00678d9447ace4de8596a2d221af5cf5bbc7f571cac795006" + "sha256": "54468f4cf5d16864b46dca4e96cd9359a6b720a3cfbff6d403f2486e31cf88f9" }, { - "name": "com.github.jengelman.gradle.plugins-shadow-5.1.0-jar", - "filename": "shadow-5.1.0.jar", - "path": "com/github/jengelman/gradle/plugins/shadow/5.1.0", + "id": { + "group": "com.github.johnrengelman.shadow", + "name": "com.github.johnrengelman.shadow.gradle.plugin", + "version": "5.2.0", + "type": "pom", + "extension": "pom" + }, + "name": "com.github.johnrengelman.shadow.gradle.plugin-5.2.0.pom", + "path": "com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/5.2.0", "urls": [ - "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/5.1.0/shadow-5.1.0.jar" + "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/5.2.0/com.github.johnrengelman.shadow.gradle.plugin-5.2.0.pom" ], - "sha256": "a8637b57d0b4c1184680613b1813a43b9097a287fdf1783e58fd85d64f86b937" + "sha256": "3d7e7bd33bb8b7b67db9e45601cc5f0a2080bc4ce830d976b1ad2f3e4a091a0b" }, { - "name": "com.github.jengelman.gradle.plugins-shadow-5.1.0-pom", - "filename": "shadow-5.1.0.pom", - "path": "com/github/jengelman/gradle/plugins/shadow/5.1.0", - "urls": [ - "https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/5.1.0/shadow-5.1.0.pom" - ], - "sha256": "f3b0baf9c231307b38e15261b8cf98f9965e98403a4fc4738c02a3f3c7dea4b0" - }, - { - "name": "com.github.johnrengelman.shadow-com.github.johnrengelman.shadow.gradle.plugin-5.1.0-pom", - "filename": "com.github.johnrengelman.shadow.gradle.plugin-5.1.0.pom", - "path": "com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/5.1.0", - "urls": [ - "https://plugins.gradle.org/m2/com/github/johnrengelman/shadow/com.github.johnrengelman.shadow.gradle.plugin/5.1.0/com.github.johnrengelman.shadow.gradle.plugin-5.1.0.pom" - ], - "sha256": "8662538c01cac35181f80db3d614b55795d9c6962be9d7fc543a691d489a560a" - }, - { - "name": "com.google.code.gson-gson-parent-2.8.5-pom", - "filename": "gson-parent-2.8.5.pom", - "path": "com/google/code/gson/gson-parent/2.8.5", - "urls": [ - "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom" - ], - "sha256": "8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27" - }, - { - "name": "com.google.code.gson-gson-2.8.5-jar", - "filename": "gson-2.8.5.jar", + "id": { + "group": "com.google.code.gson", + "name": "gson", + "version": "2.8.5", + "type": "jar", + "extension": "jar" + }, + "name": "gson-2.8.5.jar", "path": "com/google/code/gson/gson/2.8.5", "urls": [ "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar" @@ -166,8 +223,14 @@ "sha256": "233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81" }, { - "name": "com.google.code.gson-gson-2.8.5-pom", - "filename": "gson-2.8.5.pom", + "id": { + "group": "com.google.code.gson", + "name": "gson", + "version": "2.8.5", + "type": "pom", + "extension": "pom" + }, + "name": "gson-2.8.5.pom", "path": "com/google/code/gson/gson/2.8.5", "urls": [ "https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom" @@ -175,8 +238,29 @@ "sha256": "b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092" }, { - "name": "commons-codec-commons-codec-1.9-jar", - "filename": "commons-codec-1.9.jar", + "id": { + "group": "com.google.code.gson", + "name": "gson-parent", + "version": "2.8.5", + "type": "pom", + "extension": "pom" + }, + "name": "gson-parent-2.8.5.pom", + "path": "com/google/code/gson/gson-parent/2.8.5", + "urls": [ + "https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-parent-2.8.5.pom" + ], + "sha256": "8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27" + }, + { + "id": { + "group": "commons-codec", + "name": "commons-codec", + "version": "1.9", + "type": "jar", + "extension": "jar" + }, + "name": "commons-codec-1.9.jar", "path": "commons-codec/commons-codec/1.9", "urls": [ "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.9/commons-codec-1.9.jar" @@ -184,8 +268,14 @@ "sha256": "ad19d2601c3abf0b946b5c3a4113e226a8c1e3305e395b90013b78dd94a723ce" }, { - "name": "commons-codec-commons-codec-1.9-pom", - "filename": "commons-codec-1.9.pom", + "id": { + "group": "commons-codec", + "name": "commons-codec", + "version": "1.9", + "type": "pom", + "extension": "pom" + }, + "name": "commons-codec-1.9.pom", "path": "commons-codec/commons-codec/1.9", "urls": [ "https://plugins.gradle.org/m2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom" @@ -193,8 +283,14 @@ "sha256": "e5efcf039cd909688c201dc5479b144fd6f01f0e40252b7fc5e7d2e1b5c07990" }, { - "name": "commons-io-commons-io-2.6-jar", - "filename": "commons-io-2.6.jar", + "id": { + "group": "commons-io", + "name": "commons-io", + "version": "2.6", + "type": "jar", + "extension": "jar" + }, + "name": "commons-io-2.6.jar", "path": "commons-io/commons-io/2.6", "urls": [ "https://plugins.gradle.org/m2/commons-io/commons-io/2.6/commons-io-2.6.jar" @@ -202,8 +298,14 @@ "sha256": "f877d304660ac2a142f3865badfc971dec7ed73c747c7f8d5d2f5139ca736513" }, { - "name": "commons-io-commons-io-2.6-pom", - "filename": "commons-io-2.6.pom", + "id": { + "group": "commons-io", + "name": "commons-io", + "version": "2.6", + "type": "pom", + "extension": "pom" + }, + "name": "commons-io-2.6.pom", "path": "commons-io/commons-io/2.6", "urls": [ "https://plugins.gradle.org/m2/commons-io/commons-io/2.6/commons-io-2.6.pom" @@ -211,8 +313,14 @@ "sha256": "0c23863893a2291f5a7afdbd8d15923b3948afd87e563fa341cdcf6eae338a60" }, { - "name": "commons-logging-commons-logging-1.2-jar", - "filename": "commons-logging-1.2.jar", + "id": { + "group": "commons-logging", + "name": "commons-logging", + "version": "1.2", + "type": "jar", + "extension": "jar" + }, + "name": "commons-logging-1.2.jar", "path": "commons-logging/commons-logging/1.2", "urls": [ "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" @@ -220,8 +328,14 @@ "sha256": "daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636" }, { - "name": "commons-logging-commons-logging-1.2-pom", - "filename": "commons-logging-1.2.pom", + "id": { + "group": "commons-logging", + "name": "commons-logging", + "version": "1.2", + "type": "pom", + "extension": "pom" + }, + "name": "commons-logging-1.2.pom", "path": "commons-logging/commons-logging/1.2", "urls": [ "https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom" @@ -229,8 +343,14 @@ "sha256": "c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20" }, { - "name": "de.undercouch-gradle-download-task-3.4.3-jar", - "filename": "gradle-download-task-3.4.3.jar", + "id": { + "group": "de.undercouch", + "name": "gradle-download-task", + "version": "3.4.3", + "type": "jar", + "extension": "jar" + }, + "name": "gradle-download-task-3.4.3.jar", "path": "de/undercouch/gradle-download-task/3.4.3", "urls": [ "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.jar" @@ -238,8 +358,14 @@ "sha256": "453637054b08115122b7c7b2acf87e912e1613a78f37be3e9e6779cd0830d43e" }, { - "name": "de.undercouch-gradle-download-task-3.4.3-pom", - "filename": "gradle-download-task-3.4.3.pom", + "id": { + "group": "de.undercouch", + "name": "gradle-download-task", + "version": "3.4.3", + "type": "pom", + "extension": "pom" + }, + "name": "gradle-download-task-3.4.3.pom", "path": "de/undercouch/gradle-download-task/3.4.3", "urls": [ "https://plugins.gradle.org/m2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom" @@ -247,224 +373,59 @@ "sha256": "1d87bc920ff3bb03a327f736f02634be87e31f46a85ab98114ba64a4366057dc" }, { - "name": "org.ajoberstar.stutter-org.ajoberstar.stutter.gradle.plugin-0.5.0-pom", - "filename": "org.ajoberstar.stutter.gradle.plugin-0.5.0.pom", - "path": "org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.5.0", + "id": { + "group": "org.ajoberstar", + "name": "gradle-stutter", + "version": "0.5.1", + "type": "jar", + "extension": "jar" + }, + "name": "gradle-stutter-0.5.1.jar", + "path": "org/ajoberstar/gradle-stutter/0.5.1", "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.5.0/org.ajoberstar.stutter.gradle.plugin-0.5.0.pom" + "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.5.1/gradle-stutter-0.5.1.jar" ], - "sha256": "abd903d79fa785756fe34b210552a76dd3143cd0bd127312628832d593280bfb" + "sha256": "d80a0a51846d93a6d2949e0a6bc4cbc279c8f87dcba4e03ad5d5faf8b9fda518" }, { - "name": "org.ajoberstar-gradle-stutter-0.5.0-jar", - "filename": "gradle-stutter-0.5.0.jar", - "path": "org/ajoberstar/gradle-stutter/0.5.0", + "id": { + "group": "org.ajoberstar", + "name": "gradle-stutter", + "version": "0.5.1", + "type": "pom", + "extension": "pom" + }, + "name": "gradle-stutter-0.5.1.pom", + "path": "org/ajoberstar/gradle-stutter/0.5.1", "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.5.0/gradle-stutter-0.5.0.jar" + "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.5.1/gradle-stutter-0.5.1.pom" ], - "sha256": "b1a62c84b6a7c57af07844a573f6b80d05e38338abb496a2d17071314986a6a1" + "sha256": "f496df9a0b57125692fd96985f8361f15f4daa134362183efbe1c66b88336647" }, { - "name": "org.ajoberstar-gradle-stutter-0.5.0-pom", - "filename": "gradle-stutter-0.5.0.pom", - "path": "org/ajoberstar/gradle-stutter/0.5.0", + "id": { + "group": "org.ajoberstar.stutter", + "name": "org.ajoberstar.stutter.gradle.plugin", + "version": "0.5.1", + "type": "pom", + "extension": "pom" + }, + "name": "org.ajoberstar.stutter.gradle.plugin-0.5.1.pom", + "path": "org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.5.1", "urls": [ - "https://plugins.gradle.org/m2/org/ajoberstar/gradle-stutter/0.5.0/gradle-stutter-0.5.0.pom" + "https://plugins.gradle.org/m2/org/ajoberstar/stutter/org.ajoberstar.stutter.gradle.plugin/0.5.1/org.ajoberstar.stutter.gradle.plugin-0.5.1.pom" ], - "sha256": "176a455d204396970c18a83693641f00813db6afba54245c6cf72b6f65811436" + "sha256": "df9fc6fec6786641d460cc73deb1abbb3858970e97d2b979b5732b82e36bdb6a" }, { - "name": "org.apache.ant-ant-launcher-1.9.7-jar", - "filename": "ant-launcher-1.9.7.jar", - "path": "org/apache/ant/ant-launcher/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.jar" - ], - "sha256": "bc376f6d6cb586229f451ac459faf1443b144c26d6647618ec9cba60e54c2b79" - }, - { - "name": "org.apache.ant-ant-launcher-1.9.7-pom", - "filename": "ant-launcher-1.9.7.pom", - "path": "org/apache/ant/ant-launcher/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.pom" - ], - "sha256": "d7bcdd3ab0ff55edbe1b96d06f06dac2135ec63b5a7c32cef3a436b49c9eee27" - }, - { - "name": "org.apache.ant-ant-parent-1.9.7-pom", - "filename": "ant-parent-1.9.7.pom", - "path": "org/apache/ant/ant-parent/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.9.7/ant-parent-1.9.7.pom" - ], - "sha256": "75d2cef64c65ccbdd2faf7261e53b444778d56d338763154e30fada4a41d1215" - }, - { - "name": "org.apache.ant-ant-1.9.7-jar", - "filename": "ant-1.9.7.jar", - "path": "org/apache/ant/ant/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.jar" - ], - "sha256": "9a5dbe3f5f2cb91854c8682cab80178afa412ab35a5ab718bf39ce01b3435d93" - }, - { - "name": "org.apache.ant-ant-1.9.7-pom", - "filename": "ant-1.9.7.pom", - "path": "org/apache/ant/ant/1.9.7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.pom" - ], - "sha256": "1b9fbd4f325a71e99b279080d63084f12d884d42081af298f9e553e1fe0cd74a" - }, - { - "name": "org.apache.commons-commons-parent-32-pom", - "filename": "commons-parent-32.pom", - "path": "org/apache/commons/commons-parent/32", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/32/commons-parent-32.pom" - ], - "sha256": "e4d258af8b2ff4032148d415379def7870789a6003e80576f1504b10f26b4be8" - }, - { - "name": "org.apache.commons-commons-parent-34-pom", - "filename": "commons-parent-34.pom", - "path": "org/apache/commons/commons-parent/34", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/34/commons-parent-34.pom" - ], - "sha256": "3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c" - }, - { - "name": "org.apache.commons-commons-parent-42-pom", - "filename": "commons-parent-42.pom", - "path": "org/apache/commons/commons-parent/42", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/42/commons-parent-42.pom" - ], - "sha256": "cd313494c670b483ec256972af1698b330e598f807002354eb765479f604b09c" - }, - { - "name": "org.apache.httpcomponents-httpclient-4.5.3-jar", - "filename": "httpclient-4.5.3.jar", - "path": "org/apache/httpcomponents/httpclient/4.5.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar" - ], - "sha256": "db3d1b6c2d6a5e5ad47577ad61854e2f0e0936199b8e05eb541ed52349263135" - }, - { - "name": "org.apache.httpcomponents-httpclient-4.5.3-pom", - "filename": "httpclient-4.5.3.pom", - "path": "org/apache/httpcomponents/httpclient/4.5.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.pom" - ], - "sha256": "cde5750309c07bbac140d0d981697243d3c58c2ee525c1319b9ba887d89f2c9c" - }, - { - "name": "org.apache.httpcomponents-httpcomponents-client-4.5.3-pom", - "filename": "httpcomponents-client-4.5.3.pom", - "path": "org/apache/httpcomponents/httpcomponents-client/4.5.3", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.5.3/httpcomponents-client-4.5.3.pom" - ], - "sha256": "43c7d2975a1125bb00cf058a3877f549a1f1894f8b8ad47e2c3e46e3fc4623dc" - }, - { - "name": "org.apache.httpcomponents-httpcomponents-core-4.4.6-pom", - "filename": "httpcomponents-core-4.4.6.pom", - "path": "org/apache/httpcomponents/httpcomponents-core/4.4.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6.pom" - ], - "sha256": "2a3cb532d0dd63f3f3f080307edd5ff84f4625253bf6b564eb72737753dd96be" - }, - { - "name": "org.apache.httpcomponents-httpcore-4.4.6-jar", - "filename": "httpcore-4.4.6.jar", - "path": "org/apache/httpcomponents/httpcore/4.4.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.jar" - ], - "sha256": "d7f853dee87680b07293d30855b39b9eb56c1297bd16ff1cd6f19ddb8fa745fb" - }, - { - "name": "org.apache.httpcomponents-httpcore-4.4.6-pom", - "filename": "httpcore-4.4.6.pom", - "path": "org/apache/httpcomponents/httpcore/4.4.6", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.pom" - ], - "sha256": "398285cfef554fb55b81f20c94f54bf0e28b0462ba92fa3970e933945c08f655" - }, - { - "name": "org.apache.httpcomponents-project-7-pom", - "filename": "project-7.pom", - "path": "org/apache/httpcomponents/project/7", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom" - ], - "sha256": "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3" - }, - { - "name": "org.apache.logging.log4j-log4j-api-2.11.0-jar", - "filename": "log4j-api-2.11.0.jar", - "path": "org/apache/logging/log4j/log4j-api/2.11.0", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.11.0/log4j-api-2.11.0.jar" - ], - "sha256": "fa5828950269b0ae425c96d889f18f40b336e9fa886841ae06bb9225511f1217" - }, - { - "name": "org.apache.logging.log4j-log4j-api-2.11.0-pom", - "filename": "log4j-api-2.11.0.pom", - "path": "org/apache/logging/log4j/log4j-api/2.11.0", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.11.0/log4j-api-2.11.0.pom" - ], - "sha256": "05cc2da77a2d0f24b4803cbfeb8d64a20f5494d093a1bcd7872fe28aa39069d9" - }, - { - "name": "org.apache.logging.log4j-log4j-core-2.11.0-jar", - "filename": "log4j-core-2.11.0.jar", - "path": "org/apache/logging/log4j/log4j-core/2.11.0", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.11.0/log4j-core-2.11.0.jar" - ], - "sha256": "c32029b32da3d8cf2feca0790a4bc2331ea7eb62ab368a8980b90c7d8c8101e0" - }, - { - "name": "org.apache.logging.log4j-log4j-core-2.11.0-pom", - "filename": "log4j-core-2.11.0.pom", - "path": "org/apache/logging/log4j/log4j-core/2.11.0", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.11.0/log4j-core-2.11.0.pom" - ], - "sha256": "d5629ccf572bea57192cf8c75d74e7ea05a693c42ed712647faed9ae9fbf3880" - }, - { - "name": "org.apache.logging.log4j-log4j-2.11.0-pom", - "filename": "log4j-2.11.0.pom", - "path": "org/apache/logging/log4j/log4j/2.11.0", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.11.0/log4j-2.11.0.pom" - ], - "sha256": "c786983c7bfa950a0231b9cfc2bc2b5370134c02c11e0f57d8566082a88386f3" - }, - { - "name": "org.apache.logging-logging-parent-1-pom", - "filename": "logging-parent-1.pom", - "path": "org/apache/logging/logging-parent/1", - "urls": [ - "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/1/logging-parent-1.pom" - ], - "sha256": "34b2bf4f531a809168961672ff419d1abf96725b8dfe52980f00c8c4eb134bd6" - }, - { - "name": "org.apache-apache-13-pom", - "filename": "apache-13.pom", + "id": { + "group": "org.apache", + "name": "apache", + "version": "13", + "type": "pom", + "extension": "pom" + }, + "name": "apache-13.pom", "path": "org/apache/apache/13", "urls": [ "https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom" @@ -472,8 +433,14 @@ "sha256": "ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d" }, { - "name": "org.apache-apache-18-pom", - "filename": "apache-18.pom", + "id": { + "group": "org.apache", + "name": "apache", + "version": "18", + "type": "pom", + "extension": "pom" + }, + "name": "apache-18.pom", "path": "org/apache/apache/18", "urls": [ "https://plugins.gradle.org/m2/org/apache/apache/18/apache-18.pom" @@ -481,26 +448,329 @@ "sha256": "7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17" }, { - "name": "org.codehaus.plexus-plexus-utils-3.0.24-jar", - "filename": "plexus-utils-3.0.24.jar", - "path": "org/codehaus/plexus/plexus-utils/3.0.24", + "id": { + "group": "org.apache.ant", + "name": "ant", + "version": "1.9.7", + "type": "jar", + "extension": "jar" + }, + "name": "ant-1.9.7.jar", + "path": "org/apache/ant/ant/1.9.7", "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.jar" + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.jar" ], - "sha256": "83ee748b12d06afb0ad4050a591132b3e8025fbb1990f1ed002e8b73293e69b4" + "sha256": "9a5dbe3f5f2cb91854c8682cab80178afa412ab35a5ab718bf39ce01b3435d93" }, { - "name": "org.codehaus.plexus-plexus-utils-3.0.24-pom", - "filename": "plexus-utils-3.0.24.pom", - "path": "org/codehaus/plexus/plexus-utils/3.0.24", + "id": { + "group": "org.apache.ant", + "name": "ant", + "version": "1.9.7", + "type": "pom", + "extension": "pom" + }, + "name": "ant-1.9.7.pom", + "path": "org/apache/ant/ant/1.9.7", "urls": [ - "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.pom" + "https://plugins.gradle.org/m2/org/apache/ant/ant/1.9.7/ant-1.9.7.pom" ], - "sha256": "11067f6a75fded12bcdc8daf7a66ddd942ce289c3daf88a3fe0f8b12858a2ee6" + "sha256": "1b9fbd4f325a71e99b279080d63084f12d884d42081af298f9e553e1fe0cd74a" }, { - "name": "org.codehaus.plexus-plexus-4.0-pom", - "filename": "plexus-4.0.pom", + "id": { + "group": "org.apache.ant", + "name": "ant-launcher", + "version": "1.9.7", + "type": "jar", + "extension": "jar" + }, + "name": "ant-launcher-1.9.7.jar", + "path": "org/apache/ant/ant-launcher/1.9.7", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.jar" + ], + "sha256": "bc376f6d6cb586229f451ac459faf1443b144c26d6647618ec9cba60e54c2b79" + }, + { + "id": { + "group": "org.apache.ant", + "name": "ant-launcher", + "version": "1.9.7", + "type": "pom", + "extension": "pom" + }, + "name": "ant-launcher-1.9.7.pom", + "path": "org/apache/ant/ant-launcher/1.9.7", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-launcher/1.9.7/ant-launcher-1.9.7.pom" + ], + "sha256": "d7bcdd3ab0ff55edbe1b96d06f06dac2135ec63b5a7c32cef3a436b49c9eee27" + }, + { + "id": { + "group": "org.apache.ant", + "name": "ant-parent", + "version": "1.9.7", + "type": "pom", + "extension": "pom" + }, + "name": "ant-parent-1.9.7.pom", + "path": "org/apache/ant/ant-parent/1.9.7", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/ant/ant-parent/1.9.7/ant-parent-1.9.7.pom" + ], + "sha256": "75d2cef64c65ccbdd2faf7261e53b444778d56d338763154e30fada4a41d1215" + }, + { + "id": { + "group": "org.apache.commons", + "name": "commons-parent", + "version": "32", + "type": "pom", + "extension": "pom" + }, + "name": "commons-parent-32.pom", + "path": "org/apache/commons/commons-parent/32", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/32/commons-parent-32.pom" + ], + "sha256": "e4d258af8b2ff4032148d415379def7870789a6003e80576f1504b10f26b4be8" + }, + { + "id": { + "group": "org.apache.commons", + "name": "commons-parent", + "version": "34", + "type": "pom", + "extension": "pom" + }, + "name": "commons-parent-34.pom", + "path": "org/apache/commons/commons-parent/34", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/34/commons-parent-34.pom" + ], + "sha256": "3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c" + }, + { + "id": { + "group": "org.apache.commons", + "name": "commons-parent", + "version": "42", + "type": "pom", + "extension": "pom" + }, + "name": "commons-parent-42.pom", + "path": "org/apache/commons/commons-parent/42", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/commons/commons-parent/42/commons-parent-42.pom" + ], + "sha256": "cd313494c670b483ec256972af1698b330e598f807002354eb765479f604b09c" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpclient", + "version": "4.5.3", + "type": "jar", + "extension": "jar" + }, + "name": "httpclient-4.5.3.jar", + "path": "org/apache/httpcomponents/httpclient/4.5.3", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar" + ], + "sha256": "db3d1b6c2d6a5e5ad47577ad61854e2f0e0936199b8e05eb541ed52349263135" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpclient", + "version": "4.5.3", + "type": "pom", + "extension": "pom" + }, + "name": "httpclient-4.5.3.pom", + "path": "org/apache/httpcomponents/httpclient/4.5.3", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.pom" + ], + "sha256": "cde5750309c07bbac140d0d981697243d3c58c2ee525c1319b9ba887d89f2c9c" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpcomponents-client", + "version": "4.5.3", + "type": "pom", + "extension": "pom" + }, + "name": "httpcomponents-client-4.5.3.pom", + "path": "org/apache/httpcomponents/httpcomponents-client/4.5.3", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-client/4.5.3/httpcomponents-client-4.5.3.pom" + ], + "sha256": "43c7d2975a1125bb00cf058a3877f549a1f1894f8b8ad47e2c3e46e3fc4623dc" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpcomponents-core", + "version": "4.4.6", + "type": "pom", + "extension": "pom" + }, + "name": "httpcomponents-core-4.4.6.pom", + "path": "org/apache/httpcomponents/httpcomponents-core/4.4.6", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6.pom" + ], + "sha256": "2a3cb532d0dd63f3f3f080307edd5ff84f4625253bf6b564eb72737753dd96be" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpcore", + "version": "4.4.6", + "type": "jar", + "extension": "jar" + }, + "name": "httpcore-4.4.6.jar", + "path": "org/apache/httpcomponents/httpcore/4.4.6", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.jar" + ], + "sha256": "d7f853dee87680b07293d30855b39b9eb56c1297bd16ff1cd6f19ddb8fa745fb" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "httpcore", + "version": "4.4.6", + "type": "pom", + "extension": "pom" + }, + "name": "httpcore-4.4.6.pom", + "path": "org/apache/httpcomponents/httpcore/4.4.6", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.pom" + ], + "sha256": "398285cfef554fb55b81f20c94f54bf0e28b0462ba92fa3970e933945c08f655" + }, + { + "id": { + "group": "org.apache.httpcomponents", + "name": "project", + "version": "7", + "type": "pom", + "extension": "pom" + }, + "name": "project-7.pom", + "path": "org/apache/httpcomponents/project/7", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/httpcomponents/project/7/project-7.pom" + ], + "sha256": "3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3" + }, + { + "id": { + "group": "org.apache.logging", + "name": "logging-parent", + "version": "1", + "type": "pom", + "extension": "pom" + }, + "name": "logging-parent-1.pom", + "path": "org/apache/logging/logging-parent/1", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/logging-parent/1/logging-parent-1.pom" + ], + "sha256": "34b2bf4f531a809168961672ff419d1abf96725b8dfe52980f00c8c4eb134bd6" + }, + { + "id": { + "group": "org.apache.logging.log4j", + "name": "log4j", + "version": "2.11.0", + "type": "pom", + "extension": "pom" + }, + "name": "log4j-2.11.0.pom", + "path": "org/apache/logging/log4j/log4j/2.11.0", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j/2.11.0/log4j-2.11.0.pom" + ], + "sha256": "c786983c7bfa950a0231b9cfc2bc2b5370134c02c11e0f57d8566082a88386f3" + }, + { + "id": { + "group": "org.apache.logging.log4j", + "name": "log4j-api", + "version": "2.11.0", + "type": "jar", + "extension": "jar" + }, + "name": "log4j-api-2.11.0.jar", + "path": "org/apache/logging/log4j/log4j-api/2.11.0", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.11.0/log4j-api-2.11.0.jar" + ], + "sha256": "fa5828950269b0ae425c96d889f18f40b336e9fa886841ae06bb9225511f1217" + }, + { + "id": { + "group": "org.apache.logging.log4j", + "name": "log4j-api", + "version": "2.11.0", + "type": "pom", + "extension": "pom" + }, + "name": "log4j-api-2.11.0.pom", + "path": "org/apache/logging/log4j/log4j-api/2.11.0", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-api/2.11.0/log4j-api-2.11.0.pom" + ], + "sha256": "05cc2da77a2d0f24b4803cbfeb8d64a20f5494d093a1bcd7872fe28aa39069d9" + }, + { + "id": { + "group": "org.apache.logging.log4j", + "name": "log4j-core", + "version": "2.11.0", + "type": "jar", + "extension": "jar" + }, + "name": "log4j-core-2.11.0.jar", + "path": "org/apache/logging/log4j/log4j-core/2.11.0", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.11.0/log4j-core-2.11.0.jar" + ], + "sha256": "c32029b32da3d8cf2feca0790a4bc2331ea7eb62ab368a8980b90c7d8c8101e0" + }, + { + "id": { + "group": "org.apache.logging.log4j", + "name": "log4j-core", + "version": "2.11.0", + "type": "pom", + "extension": "pom" + }, + "name": "log4j-core-2.11.0.pom", + "path": "org/apache/logging/log4j/log4j-core/2.11.0", + "urls": [ + "https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/2.11.0/log4j-core-2.11.0.pom" + ], + "sha256": "d5629ccf572bea57192cf8c75d74e7ea05a693c42ed712647faed9ae9fbf3880" + }, + { + "id": { + "group": "org.codehaus.plexus", + "name": "plexus", + "version": "4.0", + "type": "pom", + "extension": "pom" + }, + "name": "plexus-4.0.pom", "path": "org/codehaus/plexus/plexus/4.0", "urls": [ "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus/4.0/plexus-4.0.pom" @@ -508,44 +778,104 @@ "sha256": "0a1b692d7fcc90d6a45dae2e50f4660d48f7a44504f174aa60ef34fbe1327f6a" }, { - "name": "org.gradle.kotlin.embedded-kotlin-org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.2.9-pom", - "filename": "org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.2.9.pom", - "path": "org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.2.9", + "id": { + "group": "org.codehaus.plexus", + "name": "plexus-utils", + "version": "3.0.24", + "type": "jar", + "extension": "jar" + }, + "name": "plexus-utils-3.0.24.jar", + "path": "org/codehaus/plexus/plexus-utils/3.0.24", "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.2.9/org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.2.9.pom" + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.jar" ], - "sha256": "89c98657590041accc65f5ac532dcb52ae7a5f3b06b234e18ab3bd3213d5e656" + "sha256": "83ee748b12d06afb0ad4050a591132b3e8025fbb1990f1ed002e8b73293e69b4" }, { - "name": "org.gradle.kotlin.kotlin-dsl-org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.2.9-pom", - "filename": "org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.2.9.pom", - "path": "org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.2.9", + "id": { + "group": "org.codehaus.plexus", + "name": "plexus-utils", + "version": "3.0.24", + "type": "pom", + "extension": "pom" + }, + "name": "plexus-utils-3.0.24.pom", + "path": "org/codehaus/plexus/plexus-utils/3.0.24", "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.2.9/org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.2.9.pom" + "https://plugins.gradle.org/m2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.pom" ], - "sha256": "37867da2fe65d22ee3b63696b675b6ab8b27b1e1093a328f090c32c72a250297" + "sha256": "11067f6a75fded12bcdc8daf7a66ddd942ce289c3daf88a3fe0f8b12858a2ee6" }, { - "name": "org.gradle.kotlin-plugins-1.2.9-jar", - "filename": "plugins-1.2.9.jar", - "path": "org/gradle/kotlin/plugins/1.2.9", + "id": { + "group": "org.gradle.kotlin", + "name": "plugins", + "version": "1.3.3", + "type": "jar", + "extension": "jar" + }, + "name": "plugins-1.3.3.jar", + "path": "org/gradle/kotlin/plugins/1.3.3", "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.2.9/plugins-1.2.9.jar" + "https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.3.3/plugins-1.3.3.jar" ], - "sha256": "17511bafd8041ccb18f1ae599df001812d031fff8d39c1c6e350810d24c4ab0f" + "sha256": "3cfea44746f81625e403a72d41bedc2d57c6c1a7b56d525583151d36edb8c98c" }, { - "name": "org.gradle.kotlin-plugins-1.2.9-pom", - "filename": "plugins-1.2.9.pom", - "path": "org/gradle/kotlin/plugins/1.2.9", + "id": { + "group": "org.gradle.kotlin", + "name": "plugins", + "version": "1.3.3", + "type": "pom", + "extension": "pom" + }, + "name": "plugins-1.3.3.pom", + "path": "org/gradle/kotlin/plugins/1.3.3", "urls": [ - "https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.2.9/plugins-1.2.9.pom" + "https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.3.3/plugins-1.3.3.pom" ], - "sha256": "75977c1d3d199f1a733fdc9145c8e58be6c791c9ab501dc7fdf37c2eb760f37e" + "sha256": "485d12c1eb3b7f82ad8e9221c80f593a747450c37aa36c864571efe60d56ae10" }, { - "name": "org.jdom-jdom2-2.0.6-jar", - "filename": "jdom2-2.0.6.jar", + "id": { + "group": "org.gradle.kotlin.embedded-kotlin", + "name": "org.gradle.kotlin.embedded-kotlin.gradle.plugin", + "version": "1.3.3", + "type": "pom", + "extension": "pom" + }, + "name": "org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.3.3.pom", + "path": "org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.3.3", + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/embedded-kotlin/org.gradle.kotlin.embedded-kotlin.gradle.plugin/1.3.3/org.gradle.kotlin.embedded-kotlin.gradle.plugin-1.3.3.pom" + ], + "sha256": "b116713c7d9ef48c4239b0972faacbbf79c9fd9184cf7fa85bf816a2253cf896" + }, + { + "id": { + "group": "org.gradle.kotlin.kotlin-dsl", + "name": "org.gradle.kotlin.kotlin-dsl.gradle.plugin", + "version": "1.3.3", + "type": "pom", + "extension": "pom" + }, + "name": "org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.3.3.pom", + "path": "org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.3.3", + "urls": [ + "https://plugins.gradle.org/m2/org/gradle/kotlin/kotlin-dsl/org.gradle.kotlin.kotlin-dsl.gradle.plugin/1.3.3/org.gradle.kotlin.kotlin-dsl.gradle.plugin-1.3.3.pom" + ], + "sha256": "565317f2b01ab45d71fc28654d05507f186f5d68dbac00acb46997e4107b5c6e" + }, + { + "id": { + "group": "org.jdom", + "name": "jdom2", + "version": "2.0.6", + "type": "jar", + "extension": "jar" + }, + "name": "jdom2-2.0.6.jar", "path": "org/jdom/jdom2/2.0.6", "urls": [ "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar" @@ -553,8 +883,14 @@ "sha256": "1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5" }, { - "name": "org.jdom-jdom2-2.0.6-pom", - "filename": "jdom2-2.0.6.pom", + "id": { + "group": "org.jdom", + "name": "jdom2", + "version": "2.0.6", + "type": "pom", + "extension": "pom" + }, + "name": "jdom2-2.0.6.pom", "path": "org/jdom/jdom2/2.0.6", "urls": [ "https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom" @@ -562,422 +898,14 @@ "sha256": "47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d" }, { - "name": "org.jetbrains.intellij.deps-trove4j-1.0.20181211-jar", - "filename": "trove4j-1.0.20181211.jar", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" - ], - "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" - }, - { - "name": "org.jetbrains.intellij.deps-trove4j-1.0.20181211-pom", - "filename": "trove4j-1.0.20181211.pom", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" - ], - "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" - }, - { - "name": "org.jetbrains.kotlin.jvm-org.jetbrains.kotlin.jvm.gradle.plugin-1.3.41-pom", - "filename": "org.jetbrains.kotlin.jvm.gradle.plugin-1.3.41.pom", - "path": "org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.3.41/org.jetbrains.kotlin.jvm.gradle.plugin-1.3.41.pom" - ], - "sha256": "76dc213c6065dd9d9eb4852545ab572b995fc7f79bd441e04315bb609eebb7ec" - }, - { - "name": "org.jetbrains.kotlin.kapt-org.jetbrains.kotlin.kapt.gradle.plugin-1.3.41-pom", - "filename": "org.jetbrains.kotlin.kapt.gradle.plugin-1.3.41.pom", - "path": "org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.3.41/org.jetbrains.kotlin.kapt.gradle.plugin-1.3.41.pom" - ], - "sha256": "dab2947117a75101623434fa3268b65103cb99708996201dd6b52d65d9cb5e59" - }, - { - "name": "org.jetbrains.kotlin-kotlin-android-extensions-1.3.41-jar", - "filename": "kotlin-android-extensions-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.3.41/kotlin-android-extensions-1.3.41.jar" - ], - "sha256": "26d3a8cfaf833c7c463d681e60a9887dff6819d9960936317f0b615b19a11e4f" - }, - { - "name": "org.jetbrains.kotlin-kotlin-android-extensions-1.3.41-pom", - "filename": "kotlin-android-extensions-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.3.41/kotlin-android-extensions-1.3.41.pom" - ], - "sha256": "d83267404f53b7d95995cfac7723991e4761e702ae41a88703b1bd202bfcfa21" - }, - { - "name": "org.jetbrains.kotlin-kotlin-annotation-processing-gradle-1.3.41-jar", - "filename": "kotlin-annotation-processing-gradle-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.jar" - ], - "sha256": "980965a550c50f424a2c6306dec7d5a0ac94a21e1aa8dbe87f7224774d44113c" - }, - { - "name": "org.jetbrains.kotlin-kotlin-annotation-processing-gradle-1.3.41-pom", - "filename": "kotlin-annotation-processing-gradle-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.pom" - ], - "sha256": "f00bc1f5e8d853238d7225ef503f3cc931d91dd1b37007d360f2c2d1b1eaad27" - }, - { - "name": "org.jetbrains.kotlin-kotlin-build-common-1.3.41-jar", - "filename": "kotlin-build-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-build-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.3.41/kotlin-build-common-1.3.41.jar" - ], - "sha256": "602766a64424203122e9657545da958718f6dbda019081a4cd75047404d32363" - }, - { - "name": "org.jetbrains.kotlin-kotlin-build-common-1.3.41-pom", - "filename": "kotlin-build-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-build-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.3.41/kotlin-build-common-1.3.41.pom" - ], - "sha256": "fc33d0df31e9bbe6b67ff20dc211f396ac55dc350202834b85ecba0df81242e2" - }, - { - "name": "org.jetbrains.kotlin-kotlin-compiler-embeddable-1.3.41-jar", - "filename": "kotlin-compiler-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.jar" - ], - "sha256": "ea6ab03286a534ab24f123b845a107c7a53b679f6ee56bdc34b5dd1b0fd7b6f4" - }, - { - "name": "org.jetbrains.kotlin-kotlin-compiler-embeddable-1.3.41-pom", - "filename": "kotlin-compiler-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.pom" - ], - "sha256": "a630bdc69212fc0ac4a24059089eb246bd4f04f334a6f1e77952b373d0cdad8e" - }, - { - "name": "org.jetbrains.kotlin-kotlin-compiler-runner-1.3.41-jar", - "filename": "kotlin-compiler-runner-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.41/kotlin-compiler-runner-1.3.41.jar" - ], - "sha256": "f58cffaec052685c4b7985532c1bf52d9006b2b4ed9679d9c78df8867fc50d57" - }, - { - "name": "org.jetbrains.kotlin-kotlin-compiler-runner-1.3.41-pom", - "filename": "kotlin-compiler-runner-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.41/kotlin-compiler-runner-1.3.41.pom" - ], - "sha256": "83918960ee396c0e38132552c48cac0aa3f542ac09ffa974d6f106b5ddf07647" - }, - { - "name": "org.jetbrains.kotlin-kotlin-daemon-client-1.3.41-jar", - "filename": "kotlin-daemon-client-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.3.41/kotlin-daemon-client-1.3.41.jar" - ], - "sha256": "d59d7f617feef6beb880bc9aa6d4c838ebc6f15317e5a98c427815cce8ecfe84" - }, - { - "name": "org.jetbrains.kotlin-kotlin-daemon-client-1.3.41-pom", - "filename": "kotlin-daemon-client-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.3.41/kotlin-daemon-client-1.3.41.pom" - ], - "sha256": "e05bebcf2d42073d145e12df19de3163320fbf876986bb53df82b7478679455b" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-api-1.3.41-jar", - "filename": "kotlin-gradle-plugin-api-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.jar" - ], - "sha256": "57b0e2951fde88baf8ffb92d72c5682c101a7c2c12c6c501a5b47f88f5b08696" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-api-1.3.41-pom", - "filename": "kotlin-gradle-plugin-api-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.pom" - ], - "sha256": "dc338b55085bfc4cc2a98dc83c8365dbee976b9d9134ca845d42d0a3d4767937" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-model-1.3.41-jar", - "filename": "kotlin-gradle-plugin-model-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.jar" - ], - "sha256": "8a703d706c44996993f9df34b916162b99b81417f7f9d351ca8d205f0325936d" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-model-1.3.41-pom", - "filename": "kotlin-gradle-plugin-model-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.pom" - ], - "sha256": "8763bd09455cecf1c9fabea3653bd2ac17bf31a1291a153fefca8e4f28de9043" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-1.3.41-jar", - "filename": "kotlin-gradle-plugin-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.41/kotlin-gradle-plugin-1.3.41.jar" - ], - "sha256": "380b16b2ab673bb9d9341142b51484f97e6614952cc530a48ce34583952ab84f" - }, - { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-1.3.41-pom", - "filename": "kotlin-gradle-plugin-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.41/kotlin-gradle-plugin-1.3.41.pom" - ], - "sha256": "0eff171c99c60a5a26702e8e407d7af2ad2fdb5078b4c02519716ae3dc0b2594" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.41-jar", - "filename": "kotlin-reflect-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.jar" - ], - "sha256": "01d469878c6853a607baaadf869c7474b971abe6dd2cb74f244bea0ffb453c76" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.41-pom", - "filename": "kotlin-reflect-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.pom" - ], - "sha256": "4d0e8480bf227cd23d21d245dc9fe47e92056af5a6f367bc886bf43278c44146" - }, - { - "name": "org.jetbrains.kotlin-kotlin-sam-with-receiver-1.3.41-jar", - "filename": "kotlin-sam-with-receiver-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.jar" - ], - "sha256": "52ba0a7557a05f383983018818fa54389e985e1782f5d580a5f5190689fd217d" - }, - { - "name": "org.jetbrains.kotlin-kotlin-sam-with-receiver-1.3.41-pom", - "filename": "kotlin-sam-with-receiver-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.pom" - ], - "sha256": "b2d7cd94ffce942ddd379db99044bff03f24863fcf41534d7c7be3d0e16bc34c" - }, - { - "name": "org.jetbrains.kotlin-kotlin-script-runtime-1.3.41-jar", - "filename": "kotlin-script-runtime-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.jar" - ], - "sha256": "ac184612f258b460b5af4ca47f6bee0bab20a46fa818b86697ba41ef29626a31" - }, - { - "name": "org.jetbrains.kotlin-kotlin-script-runtime-1.3.41-pom", - "filename": "kotlin-script-runtime-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.pom" - ], - "sha256": "9bd39a256bdd9f7a8689f095c7eff85f8504ae03789e12cf20e6bbc689baefd1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-common-1.3.41-jar", - "filename": "kotlin-scripting-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.jar" - ], - "sha256": "fe9033bf39eb38d3daed1649f54b3321478901b9891c24482a4a06603d5b137f" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-common-1.3.41-pom", - "filename": "kotlin-scripting-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.pom" - ], - "sha256": "21253e34109f982b0b1586367e47b5c91bc630f5071e77f5bf3228bb4d4d86de" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-embeddable-1.3.41-jar", - "filename": "kotlin-scripting-compiler-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.jar" - ], - "sha256": "c2da2d19f569e8369c2f55affa0dee5f50771bc3685697ee948ee29a16d0c3c1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-embeddable-1.3.41-pom", - "filename": "kotlin-scripting-compiler-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.pom" - ], - "sha256": "024b8b34dbbda4c657bf4c9f68acb45174f9350d4c6542278855124442d491d3" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-impl-embeddable-1.3.41-jar", - "filename": "kotlin-scripting-compiler-impl-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.jar" - ], - "sha256": "854c39cdd705be01956439ae70f44a785cd0ba66388299f98bc0af75db328f29" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-impl-embeddable-1.3.41-pom", - "filename": "kotlin-scripting-compiler-impl-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.pom" - ], - "sha256": "bd29d1efdfcd51ae20d252ca66f2ea84cf3671ce323cd25518ff44a52c9a5dc1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-jvm-1.3.41-jar", - "filename": "kotlin-scripting-jvm-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.jar" - ], - "sha256": "50ad890f1dfa33e9cdeba550fab2e98e88e6f03624461cd11c7f5eb4a41de7a1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-jvm-1.3.41-pom", - "filename": "kotlin-scripting-jvm-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.pom" - ], - "sha256": "fda06e8c1b1c47e720a80176f2269e43fc95b849045bf4006b7003c964f68a49" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.41-jar", - "filename": "kotlin-stdlib-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.jar" - ], - "sha256": "6c91dea17d7dce5f0b550c3de3305767e5fb46247b6d1eb7eca0ca1fe18458de" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.41-pom", - "filename": "kotlin-stdlib-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.pom" - ], - "sha256": "d2e537cd1f7705276242d8cc903a0286b6dc86b41b6e728e967ef719022f2e15" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.41-jar", - "filename": "kotlin-stdlib-jdk7-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.jar" - ], - "sha256": "25e2409aba0ec37d2fd7c77727d7835b511879de8d9bf4862af0b493aabbe39e" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.41-pom", - "filename": "kotlin-stdlib-jdk7-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.pom" - ], - "sha256": "54c3962d2cf839d41bbee8b4817a6b2d06990c305c2efea655f64973d468a5fd" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.41-jar", - "filename": "kotlin-stdlib-jdk8-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.jar" - ], - "sha256": "f7dbbaee3e0841758187a213c052388a4e619e11c87ab16f4bc229cfe7ce5fed" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.41-pom", - "filename": "kotlin-stdlib-jdk8-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.pom" - ], - "sha256": "e3856758c3bb08b7c97ddcd493521c5e0bd0741717c93b292bf1a541513af082" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.41-jar", - "filename": "kotlin-stdlib-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.jar" - ], - "sha256": "6ea3d0921b26919b286f05cbdb906266666a36f9a7c096197114f7495708ffbc" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.41-pom", - "filename": "kotlin-stdlib-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.41", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.pom" - ], - "sha256": "785b5b66f1146317d5ed5b18c8e0c10f83cd5c909434c799a4da9823f028cd63" - }, - { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.1.1-jar", - "filename": "kotlinx-coroutines-core-1.1.1.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.jar" - ], - "sha256": "ac423f8a0aa4b4e74529696ff82c0171f81a8c8ab182a1965dff25e69c1f7844" - }, - { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.1.1-pom", - "filename": "kotlinx-coroutines-core-1.1.1.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1", - "urls": [ - "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.pom" - ], - "sha256": "82fe57e97f3f91561fe29bca615d45908ecb0ddea3e8d2cb0affd06de964872f" - }, - { - "name": "org.jetbrains-annotations-13.0-jar", - "filename": "annotations-13.0.jar", + "id": { + "group": "org.jetbrains", + "name": "annotations", + "version": "13.0", + "type": "jar", + "extension": "jar" + }, + "name": "annotations-13.0.jar", "path": "org/jetbrains/annotations/13.0", "urls": [ "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.jar" @@ -985,8 +913,14 @@ "sha256": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" }, { - "name": "org.jetbrains-annotations-13.0-pom", - "filename": "annotations-13.0.pom", + "id": { + "group": "org.jetbrains", + "name": "annotations", + "version": "13.0", + "type": "pom", + "extension": "pom" + }, + "name": "annotations-13.0.pom", "path": "org/jetbrains/annotations/13.0", "urls": [ "https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13.0.pom" @@ -994,80 +928,794 @@ "sha256": "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" }, { - "name": "org.ow2.asm-asm-analysis-7.0-beta-jar", - "filename": "asm-analysis-7.0-beta.jar", - "path": "org/ow2/asm/asm-analysis/7.0-beta", + "id": { + "group": "org.jetbrains.intellij.deps", + "name": "trove4j", + "version": "1.0.20181211", + "type": "jar", + "extension": "jar" + }, + "name": "trove4j-1.0.20181211.jar", + "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/7.0-beta/asm-analysis-7.0-beta.jar" + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" ], - "sha256": "4d2b20a1fb44acb33b0ddb80be58b2ad7838c1fb520282a655a1217b3c6acf19" + "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" }, { - "name": "org.ow2.asm-asm-analysis-7.0-beta-pom", - "filename": "asm-analysis-7.0-beta.pom", - "path": "org/ow2/asm/asm-analysis/7.0-beta", + "id": { + "group": "org.jetbrains.intellij.deps", + "name": "trove4j", + "version": "1.0.20181211", + "type": "pom", + "extension": "pom" + }, + "name": "trove4j-1.0.20181211.pom", + "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/7.0-beta/asm-analysis-7.0-beta.pom" + "https://plugins.gradle.org/m2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" ], - "sha256": "7a068ba0c921fe69824731f6a1b14f86ff0828a0c5941e5c24b6b501e2f6e69f" + "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" }, { - "name": "org.ow2.asm-asm-commons-7.0-beta-jar", - "filename": "asm-commons-7.0-beta.jar", - "path": "org/ow2/asm/asm-commons/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-android-extensions", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-android-extensions-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/7.0-beta/asm-commons-7.0-beta.jar" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.3.61/kotlin-android-extensions-1.3.61.jar" ], - "sha256": "3d8ec2534b883541b966e6dde9004967d34f7311789028afc92e2e066867dac4" + "sha256": "bfe9bb2e4b45a8f29136ccddfcf811d952230373c2231c5d4e5310840177f518" }, { - "name": "org.ow2.asm-asm-commons-7.0-beta-pom", - "filename": "asm-commons-7.0-beta.pom", - "path": "org/ow2/asm/asm-commons/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-android-extensions", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-android-extensions-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-android-extensions/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/7.0-beta/asm-commons-7.0-beta.pom" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-android-extensions/1.3.61/kotlin-android-extensions-1.3.61.pom" ], - "sha256": "2b30b9d132f43dfba6ebced3c9661b1b5c60187dfc4d5cb7e759224fea7a279e" + "sha256": "ee8052596ba4ba7e3b4e2156285bf639a67b5f8bb8f736bfde9e4535adffa5b9" }, { - "name": "org.ow2.asm-asm-tree-7.0-beta-jar", - "filename": "asm-tree-7.0-beta.jar", - "path": "org/ow2/asm/asm-tree/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-annotation-processing-gradle", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-annotation-processing-gradle-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/7.0-beta/asm-tree-7.0-beta.jar" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.jar" ], - "sha256": "a2ec5b55ceb359c324ad48b15e912e33c75889237413976d1505fe32ecde82f2" + "sha256": "77ec8e3031145c8952ee3881bd53a243d8d928a69358f7262e585b8aaa08098b" }, { - "name": "org.ow2.asm-asm-tree-7.0-beta-pom", - "filename": "asm-tree-7.0-beta.pom", - "path": "org/ow2/asm/asm-tree/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-annotation-processing-gradle", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-annotation-processing-gradle-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/7.0-beta/asm-tree-7.0-beta.pom" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.pom" ], - "sha256": "56e37d6b54903ca842eef8fe6c8863bc7f405186bc43e74a21575a3f2428ba70" + "sha256": "af91455f4dfe60bf68b3b3480cb6eaf89ba9ef0d834e70fc5c6d5004b25e6f67" }, { - "name": "org.ow2.asm-asm-7.0-beta-jar", - "filename": "asm-7.0-beta.jar", - "path": "org/ow2/asm/asm/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-build-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-build-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-build-common/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/7.0-beta/asm-7.0-beta.jar" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.3.61/kotlin-build-common-1.3.61.jar" ], - "sha256": "ba84438f0f08ae2c2f85423dc3628361d20197c46a194687defdf63ed1896a3a" + "sha256": "4e84f7dea34401552a5ab42053f5e521fbd1fafa7b211302ac5cc74242f10249" }, { - "name": "org.ow2.asm-asm-7.0-beta-pom", - "filename": "asm-7.0-beta.pom", - "path": "org/ow2/asm/asm/7.0-beta", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-build-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-build-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-build-common/1.3.61", "urls": [ - "https://plugins.gradle.org/m2/org/ow2/asm/asm/7.0-beta/asm-7.0-beta.pom" + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-build-common/1.3.61/kotlin-build-common-1.3.61.pom" ], - "sha256": "2d85484e0c0dd935e38edec52a33267ea1d50eb06d4c2ffb90d444c089571f86" + "sha256": "1895b38723fc930cb78ad204558f63385bcda234a6be2c93a5689dccaa3ce679" }, { - "name": "org.ow2-ow2-1.5-pom", - "filename": "ow2-1.5.pom", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-compiler-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.jar" + ], + "sha256": "05a964b4dfcfca057dbcfc352c6a394ba411b9914d956af4cc69f4e64da818e9" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-compiler-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.pom" + ], + "sha256": "281123163ddc5aa8eda536046ce059be9cb6fe24e6307d1fa76585944f9fce80" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-runner", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-compiler-runner-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.61/kotlin-compiler-runner-1.3.61.jar" + ], + "sha256": "2cd0c78e8505c8f162a6de56a083a1cf5bf2f8e7f9781cc34769b969e235c862" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-runner", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-compiler-runner-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-compiler-runner/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-compiler-runner/1.3.61/kotlin-compiler-runner-1.3.61.pom" + ], + "sha256": "d658aba8a55af3296bb003d8618608c1772e490c0c37b09fee731ff602b059d3" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-client", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-daemon-client-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.3.61/kotlin-daemon-client-1.3.61.jar" + ], + "sha256": "1613dfe55c1bfb4b888bdf741525451bf3449834eeae07d66771bd944fdd2940" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-client", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-daemon-client-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-daemon-client/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-client/1.3.61/kotlin-daemon-client-1.3.61.pom" + ], + "sha256": "09ad6bcead4c6398140b0676bd891f9b1fd10138d0b5def731e1fd5d049286eb" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-daemon-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.jar" + ], + "sha256": "81ac228adb7c4d39bc4640ece66573ec6f752cbfa13d9b6959e010de55df97af" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-daemon-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.pom" + ], + "sha256": "5e4fca06368d95aa68783bb24b74a2176ba25846b581be290a79ef06be722169" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-gradle-plugin-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.61/kotlin-gradle-plugin-1.3.61.jar" + ], + "sha256": "f702bd95b5a108717f5086e6fa5cc1be4d86f8be7de20a30ce71b2cc64a4d6b5" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-gradle-plugin-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.61/kotlin-gradle-plugin-1.3.61.pom" + ], + "sha256": "92511642b4b886ccdb1ff0bd24c376adbfa6683ea9147851954a45d061b1020c" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-api", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-gradle-plugin-api-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.jar" + ], + "sha256": "37523a505f0a7e524a9fd86b763175ceeeed29c331676c8e4a6c21d760e3543e" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-api", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-gradle-plugin-api-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.pom" + ], + "sha256": "7b70f22cf83bbc6a7aa2a219b5e96e66ea7d9a5f630d4a48a2423af72294d5a9" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-model", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-gradle-plugin-model-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.jar" + ], + "sha256": "128eb2c9800f38ff62ae8b9ec11d75004f39b7d32a3cf89751fcbffcdd4da6b5" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-model", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-gradle-plugin-model-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.pom" + ], + "sha256": "19d73513165a436a832e3e898c6e872fd28b6ade8ccfcb3baa51049f364b486c" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-native-utils", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-native-utils-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-native-utils/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.jar" + ], + "sha256": "9780246da9087f5052b93af54d0165eb0a5fa1964761b4f1243a45ce02743b6f" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-native-utils", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-native-utils-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-native-utils/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.pom" + ], + "sha256": "15f4627d4d22eef959e2710036c49b64b50ac77f535041fd2dfcf401b3fbd731" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-reflect-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.jar" + ], + "sha256": "143e715c10ff6d65eb5a7695be7b696c6e013702dff103d23ba54760bf93867b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-reflect-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.pom" + ], + "sha256": "b2b8add63c5ce9b67571ed469f7c37fd043ee2420206255e96a146018d8e2fa0" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-sam-with-receiver", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-sam-with-receiver-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.jar" + ], + "sha256": "b654b0c0fde9ea9f68d9aaf993064791070fc7d35274961095f5458c031ef559" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-sam-with-receiver", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-sam-with-receiver-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.pom" + ], + "sha256": "8fa74d745c92f4c106d4652209a67a817ce703ce87b9d563fe01a9b305eb4214" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-script-runtime", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-script-runtime-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.jar" + ], + "sha256": "14ac9a3db7e85983f51f80e5ba027f21575ce2241be1c05f029dd836ac38ec48" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-script-runtime", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-script-runtime-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.pom" + ], + "sha256": "ea189ef8e59b70fd538693a85aa3bf2fb83b08bf7e1d06b3a5dfcbff75e792c0" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.jar" + ], + "sha256": "3041dbb12b63e46c9f4b43db012381b89109e313208b583ce66a1e622294c1ec" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.pom" + ], + "sha256": "f13054cff12fa6d70452f24825b09db5cd0547a00e91a8e5dff74a3e9b4afa69" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-compiler-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.jar" + ], + "sha256": "190d1bb496a56642bdb49f07f48bc64c67d6e71c951124b8a88d4f69d5edd50b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-compiler-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.pom" + ], + "sha256": "35f7b58c379dfe7afc7e3c0715de49c17a75900e144ccc63578df3a4ac5e78c1" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-impl-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-compiler-impl-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.jar" + ], + "sha256": "3885815dfaad81221a55b5c5332664ab596fd76159c6e1b4c85d866af0048255" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-impl-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-compiler-impl-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.pom" + ], + "sha256": "a3a4d698bbdb2e99d3486b214ddcf97d1b8c7f40adcc62f4ebc251f2553e717d" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-jvm", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-jvm-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.jar" + ], + "sha256": "b76fddd6d9a7cfb5de9037048677520baec0547210b82d3c3f26d170396414b8" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-jvm", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-jvm-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.pom" + ], + "sha256": "558c9db4916819c7b33c2bad718ce2dca22250bb3ce84f049edbeae9bb2ff1cd" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" + ], + "sha256": "e51e512619a7e7650a30eb4eb3e9c03e6909c7b5e3c026404e076254c098b932" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "sha256": "dbe5babcd8d43e9b08c2845680b53fc1bb3e051c4805802ddd0ed3e8e2c50a84" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" + ], + "sha256": "a2e7f341cf3047b5f00a1917ef777d323cdab2a57377468b8ed62aa31469cf7f" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "sha256": "e22db009bb1a61636d9425635989736db5e3fca494809abf244468dc474cfc04" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-jdk7-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "sha256": "11f4a57e3e7d81f3f152d5dcefe39bd77614b5a94125ff3b11526b0a19ac3989" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-jdk7-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "sha256": "c416080aeabdb9118a08ee78c28e2856038cd85858422a71f7c46bf276f667a7" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk8", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-jdk8-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "sha256": "3839ba7deb798375da1807bc469d1cf315db7a6275599f733184374772ec3b21" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk8", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-jdk8-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "sha256": "e30187e5720ca640b8e68686f20dd0250dcef0193d56e5569c3c4a61277312b6" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-util-io", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-util-io-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-util-io/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.jar" + ], + "sha256": "4f13b88cdd9f8c992ab1065f176d4eb33b7d1803dd30309f4769b2e64c9af008" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-util-io", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-util-io-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-util-io/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.pom" + ], + "sha256": "4d0ee73ef6d24d19fc908bf616daf3daa3a070db9aeb00006a36d08dc0989df1" + }, + { + "id": { + "group": "org.jetbrains.kotlin.jvm", + "name": "org.jetbrains.kotlin.jvm.gradle.plugin", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "org.jetbrains.kotlin.jvm.gradle.plugin-1.3.61.pom", + "path": "org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/jvm/org.jetbrains.kotlin.jvm.gradle.plugin/1.3.61/org.jetbrains.kotlin.jvm.gradle.plugin-1.3.61.pom" + ], + "sha256": "e0a2e76a4b3a21a0b25944346d9300bfd45c9feb94841ea2a87d81df6e369d40" + }, + { + "id": { + "group": "org.jetbrains.kotlin.kapt", + "name": "org.jetbrains.kotlin.kapt.gradle.plugin", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "org.jetbrains.kotlin.kapt.gradle.plugin-1.3.61.pom", + "path": "org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.3.61", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlin/kapt/org.jetbrains.kotlin.kapt.gradle.plugin/1.3.61/org.jetbrains.kotlin.kapt.gradle.plugin-1.3.61.pom" + ], + "sha256": "20984c05c1b1a764ae11296e19e94efcfc90063165af77b527871ef71e5fa10e" + }, + { + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.2.1", + "type": "jar", + "extension": "jar" + }, + "name": "kotlinx-coroutines-core-1.2.1.jar", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.jar" + ], + "sha256": "7177ed4629704537e0252537629886f5409526ecd041d8d8e308e20624b14394" + }, + { + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.2.1", + "type": "pom", + "extension": "pom" + }, + "name": "kotlinx-coroutines-core-1.2.1.pom", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1", + "urls": [ + "https://plugins.gradle.org/m2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.pom" + ], + "sha256": "6f7523ea8a56d7f12d11a004cfe5a4577bfba3ed6c84cc5ac48b72d54975552c" + }, + { + "id": { + "group": "org.ow2", + "name": "ow2", + "version": "1.5", + "type": "pom", + "extension": "pom" + }, + "name": "ow2-1.5.pom", "path": "org/ow2/ow2/1.5", "urls": [ "https://plugins.gradle.org/m2/org/ow2/ow2/1.5/ow2-1.5.pom" @@ -1075,8 +1723,134 @@ "sha256": "0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b" }, { - "name": "org.sonatype.forge-forge-parent-10-pom", - "filename": "forge-parent-10.pom", + "id": { + "group": "org.ow2.asm", + "name": "asm", + "version": "7.0-beta", + "type": "jar", + "extension": "jar" + }, + "name": "asm-7.0-beta.jar", + "path": "org/ow2/asm/asm/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/7.0-beta/asm-7.0-beta.jar" + ], + "sha256": "ba84438f0f08ae2c2f85423dc3628361d20197c46a194687defdf63ed1896a3a" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm", + "version": "7.0-beta", + "type": "pom", + "extension": "pom" + }, + "name": "asm-7.0-beta.pom", + "path": "org/ow2/asm/asm/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm/7.0-beta/asm-7.0-beta.pom" + ], + "sha256": "2d85484e0c0dd935e38edec52a33267ea1d50eb06d4c2ffb90d444c089571f86" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-analysis", + "version": "7.0-beta", + "type": "jar", + "extension": "jar" + }, + "name": "asm-analysis-7.0-beta.jar", + "path": "org/ow2/asm/asm-analysis/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/7.0-beta/asm-analysis-7.0-beta.jar" + ], + "sha256": "4d2b20a1fb44acb33b0ddb80be58b2ad7838c1fb520282a655a1217b3c6acf19" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-analysis", + "version": "7.0-beta", + "type": "pom", + "extension": "pom" + }, + "name": "asm-analysis-7.0-beta.pom", + "path": "org/ow2/asm/asm-analysis/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/7.0-beta/asm-analysis-7.0-beta.pom" + ], + "sha256": "7a068ba0c921fe69824731f6a1b14f86ff0828a0c5941e5c24b6b501e2f6e69f" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-commons", + "version": "7.0-beta", + "type": "jar", + "extension": "jar" + }, + "name": "asm-commons-7.0-beta.jar", + "path": "org/ow2/asm/asm-commons/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/7.0-beta/asm-commons-7.0-beta.jar" + ], + "sha256": "3d8ec2534b883541b966e6dde9004967d34f7311789028afc92e2e066867dac4" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-commons", + "version": "7.0-beta", + "type": "pom", + "extension": "pom" + }, + "name": "asm-commons-7.0-beta.pom", + "path": "org/ow2/asm/asm-commons/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/7.0-beta/asm-commons-7.0-beta.pom" + ], + "sha256": "2b30b9d132f43dfba6ebced3c9661b1b5c60187dfc4d5cb7e759224fea7a279e" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-tree", + "version": "7.0-beta", + "type": "jar", + "extension": "jar" + }, + "name": "asm-tree-7.0-beta.jar", + "path": "org/ow2/asm/asm-tree/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/7.0-beta/asm-tree-7.0-beta.jar" + ], + "sha256": "a2ec5b55ceb359c324ad48b15e912e33c75889237413976d1505fe32ecde82f2" + }, + { + "id": { + "group": "org.ow2.asm", + "name": "asm-tree", + "version": "7.0-beta", + "type": "pom", + "extension": "pom" + }, + "name": "asm-tree-7.0-beta.pom", + "path": "org/ow2/asm/asm-tree/7.0-beta", + "urls": [ + "https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/7.0-beta/asm-tree-7.0-beta.pom" + ], + "sha256": "56e37d6b54903ca842eef8fe6c8863bc7f405186bc43e74a21575a3f2428ba70" + }, + { + "id": { + "group": "org.sonatype.forge", + "name": "forge-parent", + "version": "10", + "type": "pom", + "extension": "pom" + }, + "name": "forge-parent-10.pom", "path": "org/sonatype/forge/forge-parent/10", "urls": [ "https://plugins.gradle.org/m2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom" @@ -1084,8 +1858,14 @@ "sha256": "c14fb9c32b59cc03251f609416db7c0cff01f811edcccb4f6a865d6e7046bd0b" }, { - "name": "org.sonatype.oss-oss-parent-7-pom", - "filename": "oss-parent-7.pom", + "id": { + "group": "org.sonatype.oss", + "name": "oss-parent", + "version": "7", + "type": "pom", + "extension": "pom" + }, + "name": "oss-parent-7.pom", "path": "org/sonatype/oss/oss-parent/7", "urls": [ "https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom" @@ -1093,8 +1873,14 @@ "sha256": "b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" }, { - "name": "org.vafer-jdependency-2.1.1-jar", - "filename": "jdependency-2.1.1.jar", + "id": { + "group": "org.vafer", + "name": "jdependency", + "version": "2.1.1", + "type": "jar", + "extension": "jar" + }, + "name": "jdependency-2.1.1.jar", "path": "org/vafer/jdependency/2.1.1", "urls": [ "https://plugins.gradle.org/m2/org/vafer/jdependency/2.1.1/jdependency-2.1.1.jar" @@ -1102,8 +1888,14 @@ "sha256": "642d23a86217850721d9fa80671683d8308fd03114f0da7af553d43b82013a09" }, { - "name": "org.vafer-jdependency-2.1.1-pom", - "filename": "jdependency-2.1.1.pom", + "id": { + "group": "org.vafer", + "name": "jdependency", + "version": "2.1.1", + "type": "pom", + "extension": "pom" + }, + "name": "jdependency-2.1.1.pom", "path": "org/vafer/jdependency/2.1.1", "urls": [ "https://plugins.gradle.org/m2/org/vafer/jdependency/2.1.1/jdependency-2.1.1.pom" @@ -1114,148 +1906,222 @@ "buildscript": [], "project": [ { - "name": "com.github.ajalt-clikt-2.2.0-jar", - "filename": "clikt-2.2.0.jar", - "path": "com/github/ajalt/clikt/2.2.0", + "id": { + "group": "com.github.ajalt", + "name": "clikt", + "version": "2.3.0", + "type": "jar", + "extension": "jar" + }, + "name": "clikt-2.3.0.jar", + "path": "com/github/ajalt/clikt/2.3.0", "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt/2.2.0/clikt-2.2.0.jar", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.2.0/clikt-2.2.0.jar" + "https://jcenter.bintray.com/com/github/ajalt/clikt/2.3.0/clikt-2.3.0.jar", + "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.3.0/clikt-2.3.0.jar" ], - "sha256": "beb3136d06764ec8ce0810a8fd6c8b7b49d04287d1deef3a07c016e43a458d33" + "sha256": "f305b7f2467bebd95c9dce0f7ae30e7ea0984ba336dcf99a9fad321e87c98900" }, { - "name": "com.github.ajalt-clikt-2.2.0-pom", - "filename": "clikt-2.2.0.pom", - "path": "com/github/ajalt/clikt/2.2.0", + "id": { + "group": "com.github.ajalt", + "name": "clikt", + "version": "2.3.0", + "type": "pom", + "extension": "pom" + }, + "name": "clikt-2.3.0.pom", + "path": "com/github/ajalt/clikt/2.3.0", "urls": [ - "https://jcenter.bintray.com/com/github/ajalt/clikt/2.2.0/clikt-2.2.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.2.0/clikt-2.2.0.pom" + "https://jcenter.bintray.com/com/github/ajalt/clikt/2.3.0/clikt-2.3.0.pom", + "https://repo.gradle.org/gradle/libs-releases/com/github/ajalt/clikt/2.3.0/clikt-2.3.0.pom" ], - "sha256": "f78f39938875be9b744752a50bab9478ac2acae072e71fbfee6d4e2ca56013c8" + "sha256": "621ab7f33d23dae0b190b16d840271643202bb888cfb5395a8cf775777a9d5b7" }, { - "name": "com.squareup.moshi-moshi-adapters-1.9.1-jar", - "filename": "moshi-adapters-1.9.1.jar", - "path": "com/squareup/moshi/moshi-adapters/1.9.1", + "id": { + "group": "com.squareup", + "name": "kotlinpoet", + "version": "1.4.4", + "type": "jar", + "extension": "jar" + }, + "name": "kotlinpoet-1.4.4.jar", + "path": "com/squareup/kotlinpoet/1.4.4", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.9.1/moshi-adapters-1.9.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.9.1/moshi-adapters-1.9.1.jar" + "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.4.4/kotlinpoet-1.4.4.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.4.4/kotlinpoet-1.4.4.jar" ], - "sha256": "8c49b3388bda2cfc2734d07f81ad8e64fea278df39b0d7ebd7de91fbcfa3f9a7" + "sha256": "b3e35adfdf5d4fae4e0ed6a0d1347e0ed7c8bdf034f1d66193e6165d6ec4e21d" }, { - "name": "com.squareup.moshi-moshi-adapters-1.9.1-pom", - "filename": "moshi-adapters-1.9.1.pom", - "path": "com/squareup/moshi/moshi-adapters/1.9.1", + "id": { + "group": "com.squareup", + "name": "kotlinpoet", + "version": "1.4.4", + "type": "pom", + "extension": "pom" + }, + "name": "kotlinpoet-1.4.4.pom", + "path": "com/squareup/kotlinpoet/1.4.4", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.9.1/moshi-adapters-1.9.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.9.1/moshi-adapters-1.9.1.pom" + "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.4.4/kotlinpoet-1.4.4.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.4.4/kotlinpoet-1.4.4.pom" ], - "sha256": "fb3921c3cd01ed72e73aee5a3ee7e97add87ed58e99eeb436f6e76f13164fb44" + "sha256": "ee1a58f2289be8971ce0f2b8f520a3c6507c94a76f9742e000f227c62d93dc47" }, { - "name": "com.squareup.moshi-moshi-kotlin-codegen-1.9.1-jar", - "filename": "moshi-kotlin-codegen-1.9.1.jar", - "path": "com/squareup/moshi/moshi-kotlin-codegen/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi", + "version": "1.9.2", + "type": "jar", + "extension": "jar" + }, + "name": "moshi-1.9.2.jar", + "path": "com/squareup/moshi/moshi/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.9.1/moshi-kotlin-codegen-1.9.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.9.1/moshi-kotlin-codegen-1.9.1.jar" + "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.9.2/moshi-1.9.2.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.9.2/moshi-1.9.2.jar" ], - "sha256": "1ddd55f00470e8896f310f378647c313122c4032f4d3bb0dc58a1715261318eb" + "sha256": "48d73cc1fcef935635442700cf50a1174a3dcd2535c9fee320b70df0a83587bc" }, { - "name": "com.squareup.moshi-moshi-kotlin-codegen-1.9.1-pom", - "filename": "moshi-kotlin-codegen-1.9.1.pom", - "path": "com/squareup/moshi/moshi-kotlin-codegen/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi", + "version": "1.9.2", + "type": "pom", + "extension": "pom" + }, + "name": "moshi-1.9.2.pom", + "path": "com/squareup/moshi/moshi/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.9.1/moshi-kotlin-codegen-1.9.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.9.1/moshi-kotlin-codegen-1.9.1.pom" + "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.9.2/moshi-1.9.2.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.9.2/moshi-1.9.2.pom" ], - "sha256": "582965d81e4c4a59697b0f2eb81b0d64b6fea230798a4da2262f2c08797eae40" + "sha256": "6dfb37f452309d97561a64f4f20df967a3acd72d74fde43af6de75180881ac1c" }, { - "name": "com.squareup.moshi-moshi-kotlin-1.9.1-jar", - "filename": "moshi-kotlin-1.9.1.jar", - "path": "com/squareup/moshi/moshi-kotlin/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-adapters", + "version": "1.9.2", + "type": "jar", + "extension": "jar" + }, + "name": "moshi-adapters-1.9.2.jar", + "path": "com/squareup/moshi/moshi-adapters/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.9.1/moshi-kotlin-1.9.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.9.1/moshi-kotlin-1.9.1.jar" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.9.2/moshi-adapters-1.9.2.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.9.2/moshi-adapters-1.9.2.jar" ], - "sha256": "6dde1ff951b3e0f3f8017a0b226c9bafd6908cb5c5b341bbaf39d81db24e0aae" + "sha256": "142f03ef3750ff6e4c46f71e709559bfc8b5cb623d9e68fa59a600a936ff5ca6" }, { - "name": "com.squareup.moshi-moshi-kotlin-1.9.1-pom", - "filename": "moshi-kotlin-1.9.1.pom", - "path": "com/squareup/moshi/moshi-kotlin/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-adapters", + "version": "1.9.2", + "type": "pom", + "extension": "pom" + }, + "name": "moshi-adapters-1.9.2.pom", + "path": "com/squareup/moshi/moshi-adapters/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.9.1/moshi-kotlin-1.9.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.9.1/moshi-kotlin-1.9.1.pom" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-adapters/1.9.2/moshi-adapters-1.9.2.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-adapters/1.9.2/moshi-adapters-1.9.2.pom" ], - "sha256": "00856dcb8e5b8b443e3fe15d5cac1e04eb2594e88aa9f9f26722da202661240f" + "sha256": "e98377c868bdd53d7850b9dc47ac3b843532fa59a8c959ed0ff0e92c5e7b576d" }, { - "name": "com.squareup.moshi-moshi-parent-1.9.1-pom", - "filename": "moshi-parent-1.9.1.pom", - "path": "com/squareup/moshi/moshi-parent/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-kotlin", + "version": "1.9.2", + "type": "jar", + "extension": "jar" + }, + "name": "moshi-kotlin-1.9.2.jar", + "path": "com/squareup/moshi/moshi-kotlin/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi-parent/1.9.1/moshi-parent-1.9.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-parent/1.9.1/moshi-parent-1.9.1.pom" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.9.2/moshi-kotlin-1.9.2.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.9.2/moshi-kotlin-1.9.2.jar" ], - "sha256": "5f433869ea93f7e2374a078f8c4ec47cc6e7c0122b4a285bbd9c5b21b4e3c034" + "sha256": "97a91bd93234a5991a79ee67858b512bc63040031e694622547762b1448b6ed4" }, { - "name": "com.squareup.moshi-moshi-1.9.1-jar", - "filename": "moshi-1.9.1.jar", - "path": "com/squareup/moshi/moshi/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-kotlin", + "version": "1.9.2", + "type": "pom", + "extension": "pom" + }, + "name": "moshi-kotlin-1.9.2.pom", + "path": "com/squareup/moshi/moshi-kotlin/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.9.1/moshi-1.9.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.9.1/moshi-1.9.1.jar" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin/1.9.2/moshi-kotlin-1.9.2.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin/1.9.2/moshi-kotlin-1.9.2.pom" ], - "sha256": "6e04ef222663c9c4028bec04f7b44e351927c1dd1e0824c06078dd8248e4b2aa" + "sha256": "8bcf8168a793e4e32545d2a26968c9b0780d356f3d190fca06a373b97ebf8331" }, { - "name": "com.squareup.moshi-moshi-1.9.1-pom", - "filename": "moshi-1.9.1.pom", - "path": "com/squareup/moshi/moshi/1.9.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-kotlin-codegen", + "version": "1.9.2", + "type": "jar", + "extension": "jar" + }, + "name": "moshi-kotlin-codegen-1.9.2.jar", + "path": "com/squareup/moshi/moshi-kotlin-codegen/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/moshi/moshi/1.9.1/moshi-1.9.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi/1.9.1/moshi-1.9.1.pom" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.9.2/moshi-kotlin-codegen-1.9.2.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.9.2/moshi-kotlin-codegen-1.9.2.jar" ], - "sha256": "67deb9fa776ad559298ed8caf54696bd6cbcbc1ef214d25a6af7a4480c961582" + "sha256": "39d8e9631ec807682dbebc68b1ec9929ddac665939fd543bf434e3f6212272f3" }, { - "name": "com.squareup.okio-okio-metadata-2.4.1-jar", - "filename": "okio-metadata-2.4.1.jar", - "path": "com/squareup/okio/okio-metadata/2.4.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-kotlin-codegen", + "version": "1.9.2", + "type": "pom", + "extension": "pom" + }, + "name": "moshi-kotlin-codegen-1.9.2.pom", + "path": "com/squareup/moshi/moshi-kotlin-codegen/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/2.4.1/okio-metadata-2.4.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/2.4.1/okio-metadata-2.4.1.jar" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-kotlin-codegen/1.9.2/moshi-kotlin-codegen-1.9.2.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-kotlin-codegen/1.9.2/moshi-kotlin-codegen-1.9.2.pom" ], - "sha256": "425b2b369dec893cffb69fce08bf465a8d2aa01d0455e388ca63d1a1b35c6483" + "sha256": "70ccb176c4b019676973ad94e6b95c71be11474b5b75c6709cd3bfbc94c105e8" }, { - "name": "com.squareup.okio-okio-metadata-2.4.1-pom", - "filename": "okio-metadata-2.4.1.pom", - "path": "com/squareup/okio/okio-metadata/2.4.1", + "id": { + "group": "com.squareup.moshi", + "name": "moshi-parent", + "version": "1.9.2", + "type": "pom", + "extension": "pom" + }, + "name": "moshi-parent-1.9.2.pom", + "path": "com/squareup/moshi/moshi-parent/1.9.2", "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/2.4.1/okio-metadata-2.4.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/2.4.1/okio-metadata-2.4.1.pom" + "https://jcenter.bintray.com/com/squareup/moshi/moshi-parent/1.9.2/moshi-parent-1.9.2.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/moshi/moshi-parent/1.9.2/moshi-parent-1.9.2.pom" ], - "sha256": "21e36ace2b30fdb06c2896a0561aad4d180af5918d6ab92f6c252d433564273d" + "sha256": "20065081c581782668f6523da4582dec2e87bc753c7ed0bfff3ae7e1b5db641a" }, { - "name": "com.squareup.okio-okio-parent-1.16.0-pom", - "filename": "okio-parent-1.16.0.pom", - "path": "com/squareup/okio/okio-parent/1.16.0", - "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" - ], - "sha256": "0b7424c3faab3bb5333096e39957f88f8d50ce0c98bfba71a3fcfaa0aaf0552c" - }, - { - "name": "com.squareup.okio-okio-1.16.0-jar", - "filename": "okio-1.16.0.jar", + "id": { + "group": "com.squareup.okio", + "name": "okio", + "version": "1.16.0", + "type": "jar", + "extension": "jar" + }, + "name": "okio-1.16.0.jar", "path": "com/squareup/okio/okio/1.16.0", "urls": [ "https://jcenter.bintray.com/com/squareup/okio/okio/1.16.0/okio-1.16.0.jar", @@ -1264,8 +2130,14 @@ "sha256": "ec0484ff1903640e3845c2b10abb99eff2d32308ffe3459e5f92309a451b9c7e" }, { - "name": "com.squareup.okio-okio-1.16.0-pom", - "filename": "okio-1.16.0.pom", + "id": { + "group": "com.squareup.okio", + "name": "okio", + "version": "1.16.0", + "type": "pom", + "extension": "pom" + }, + "name": "okio-1.16.0.pom", "path": "com/squareup/okio/okio/1.16.0", "urls": [ "https://jcenter.bintray.com/com/squareup/okio/okio/1.16.0/okio-1.16.0.pom", @@ -1274,428 +2146,188 @@ "sha256": "1d2521621c0875123aa91311b2fe8edefd0ed93f66be6dfea18cc61bc5c99e36" }, { - "name": "com.squareup.okio-okio-2.4.1-jar", - "filename": "okio-2.4.1.jar", - "path": "com/squareup/okio/okio/2.4.1", + "id": { + "group": "com.squareup.okio", + "name": "okio", + "version": "2.4.3", + "type": "jar", + "extension": "jar" + }, + "name": "okio-2.4.3.jar", + "path": "com/squareup/okio/okio/2.4.3", "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/2.4.1/okio-2.4.1.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/2.4.1/okio-2.4.1.jar" + "https://jcenter.bintray.com/com/squareup/okio/okio/2.4.3/okio-2.4.3.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/2.4.3/okio-2.4.3.jar" ], - "sha256": "8b3ca9c9fb516ab2623bb4a3cfef0a5fa8580188eed9127cdefc1a0088d1fa7e" + "sha256": "183339dcac9b85dc1d192654fdfc0e473bff3b5edcba7d3a8086ea9ae683457e" }, { - "name": "com.squareup.okio-okio-2.4.1-pom", - "filename": "okio-2.4.1.pom", - "path": "com/squareup/okio/okio/2.4.1", + "id": { + "group": "com.squareup.okio", + "name": "okio", + "version": "2.4.3", + "type": "module", + "extension": "module" + }, + "name": "okio-2.4.3.module", + "path": "com/squareup/okio/okio/2.4.3", "urls": [ - "https://jcenter.bintray.com/com/squareup/okio/okio/2.4.1/okio-2.4.1.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/2.4.1/okio-2.4.1.pom" + "https://jcenter.bintray.com/com/squareup/okio/okio/2.4.3/okio-2.4.3.module", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/2.4.3/okio-2.4.3.module" ], - "sha256": "c6ec2b53cb2baa4db98ed2b9f5c844d64a8b9b09aa59cdaa1460e5feec56b464" + "sha256": "9e4e05f01fe535b9db86ac67b62ea23e93427eae0e62e6b12e9991fbb7b20964" }, { - "name": "com.squareup-kotlinpoet-1.4.3-jar", - "filename": "kotlinpoet-1.4.3.jar", - "path": "com/squareup/kotlinpoet/1.4.3", + "id": { + "group": "com.squareup.okio", + "name": "okio", + "version": "2.4.3", + "type": "pom", + "extension": "pom" + }, + "name": "okio-2.4.3.pom", + "path": "com/squareup/okio/okio/2.4.3", "urls": [ - "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.4.3/kotlinpoet-1.4.3.jar", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.4.3/kotlinpoet-1.4.3.jar" + "https://jcenter.bintray.com/com/squareup/okio/okio/2.4.3/okio-2.4.3.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio/2.4.3/okio-2.4.3.pom" ], - "sha256": "50f0c4e53504034a21be7afcb322eeb9525a37265c6538bf4e8969d8d11c89d1" + "sha256": "b2d1aabc28cb364df6636e33d54be4570ab731634a12e79f153d5734437bb82c" }, { - "name": "com.squareup-kotlinpoet-1.4.3-pom", - "filename": "kotlinpoet-1.4.3.pom", - "path": "com/squareup/kotlinpoet/1.4.3", + "id": { + "group": "com.squareup.okio", + "name": "okio-metadata", + "version": "2.4.3", + "type": "jar", + "extension": "jar" + }, + "name": "okio-metadata-2.4.3.jar", + "path": "com/squareup/okio/okio-metadata/2.4.3", "urls": [ - "https://jcenter.bintray.com/com/squareup/kotlinpoet/1.4.3/kotlinpoet-1.4.3.pom", - "https://repo.gradle.org/gradle/libs-releases/com/squareup/kotlinpoet/1.4.3/kotlinpoet-1.4.3.pom" + "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.jar", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.jar" ], - "sha256": "b7475cba345c6bb8103f1d700e6066df1856adaa40a014476ed4a4ff40348472" + "sha256": "2be9e58c4e69a08eee5b2248a3e2e88383c3a42b72b7976ddcf87f0f74cca099" }, { - "name": "org.gradle-gradle-tooling-api-5.6.3-jar", - "filename": "gradle-tooling-api-5.6.3.jar", - "path": "org/gradle/gradle-tooling-api/5.6.3", + "id": { + "group": "com.squareup.okio", + "name": "okio-metadata", + "version": "2.4.3", + "type": "module", + "extension": "module" + }, + "name": "okio-metadata-2.4.3.module", + "path": "com/squareup/okio/okio-metadata/2.4.3", "urls": [ - "https://jcenter.bintray.com/org/gradle/gradle-tooling-api/5.6.3/gradle-tooling-api-5.6.3.jar", - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/5.6.3/gradle-tooling-api-5.6.3.jar" + "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.module", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.module" ], - "sha256": "c71ad000ee224868e4c8beddfd27789c6f5068fa37f0db27b346f364529d2db8" + "sha256": "481b982b4a6eba03e5b87bc699f47595814cd9ae72c74bd230040a3243c72f3a" }, { - "name": "org.gradle-gradle-tooling-api-5.6.3-pom", - "filename": "gradle-tooling-api-5.6.3.pom", - "path": "org/gradle/gradle-tooling-api/5.6.3", + "id": { + "group": "com.squareup.okio", + "name": "okio-metadata", + "version": "2.4.3", + "type": "pom", + "extension": "pom" + }, + "name": "okio-metadata-2.4.3.pom", + "path": "com/squareup/okio/okio-metadata/2.4.3", "urls": [ - "https://jcenter.bintray.com/org/gradle/gradle-tooling-api/5.6.3/gradle-tooling-api-5.6.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/5.6.3/gradle-tooling-api-5.6.3.pom" + "https://jcenter.bintray.com/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-metadata/2.4.3/okio-metadata-2.4.3.pom" ], - "sha256": "5ea7d7b312b832ca2a9b0059b800d05a379740f42a05fb9531c1191d14172b85" + "sha256": "86bcb210e3b62b90a1f66a00d7cd53415fba5d7cbd42b26279bf323df2dff7d0" }, { - "name": "org.jetbrains.intellij.deps-trove4j-1.0.20181211-jar", - "filename": "trove4j-1.0.20181211.jar", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", + "id": { + "group": "com.squareup.okio", + "name": "okio-parent", + "version": "1.16.0", + "type": "pom", + "extension": "pom" + }, + "name": "okio-parent-1.16.0.pom", + "path": "com/squareup/okio/okio-parent/1.16.0", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" + "https://jcenter.bintray.com/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom", + "https://repo.gradle.org/gradle/libs-releases/com/squareup/okio/okio-parent/1.16.0/okio-parent-1.16.0.pom" ], - "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" + "sha256": "0b7424c3faab3bb5333096e39957f88f8d50ce0c98bfba71a3fcfaa0aaf0552c" }, { - "name": "org.jetbrains.intellij.deps-trove4j-1.0.20181211-pom", - "filename": "trove4j-1.0.20181211.pom", - "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", + "id": { + "group": "net.swiftzer.semver", + "name": "semver", + "version": "1.1.1", + "type": "jar", + "extension": "jar" + }, + "name": "semver-1.1.1.jar", + "path": "net/swiftzer/semver/semver/1.1.1", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" + "https://jcenter.bintray.com/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.jar", + "https://repo.gradle.org/gradle/libs-releases/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.jar" ], - "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" + "sha256": "757eeb1c6703b81fa3bb6bc2eae7a5fe6ddac5d833b977aa1ce08979d7c2de5a" }, { - "name": "org.jetbrains.kotlin-kotlin-annotation-processing-gradle-1.3.41-jar", - "filename": "kotlin-annotation-processing-gradle-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41", + "id": { + "group": "net.swiftzer.semver", + "name": "semver", + "version": "1.1.1", + "type": "pom", + "extension": "pom" + }, + "name": "semver-1.1.1.pom", + "path": "net/swiftzer/semver/semver/1.1.1", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.jar" + "https://jcenter.bintray.com/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.pom", + "https://repo.gradle.org/gradle/libs-releases/net/swiftzer/semver/semver/1.1.1/semver-1.1.1.pom" ], - "sha256": "980965a550c50f424a2c6306dec7d5a0ac94a21e1aa8dbe87f7224774d44113c" + "sha256": "5d65513ed1a37cc927e4261a1c9f198ea4b033dbf88930358c37b61fe63c00e7" }, { - "name": "org.jetbrains.kotlin-kotlin-annotation-processing-gradle-1.3.41-pom", - "filename": "kotlin-annotation-processing-gradle-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41", + "id": { + "group": "org.gradle", + "name": "gradle-tooling-api", + "version": "6.1", + "type": "jar", + "extension": "jar" + }, + "name": "gradle-tooling-api-6.1.jar", + "path": "org/gradle/gradle-tooling-api/6.1", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.41/kotlin-annotation-processing-gradle-1.3.41.pom" + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/6.1/gradle-tooling-api-6.1.jar" ], - "sha256": "f00bc1f5e8d853238d7225ef503f3cc931d91dd1b37007d360f2c2d1b1eaad27" + "sha256": "a53e4ed4f5495c3656a438e684e3604cfcd9f21963385b4c1ba67540e3c0a105" }, { - "name": "org.jetbrains.kotlin-kotlin-compiler-embeddable-1.3.41-jar", - "filename": "kotlin-compiler-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41", + "id": { + "group": "org.gradle", + "name": "gradle-tooling-api", + "version": "6.1", + "type": "pom", + "extension": "pom" + }, + "name": "gradle-tooling-api-6.1.pom", + "path": "org/gradle/gradle-tooling-api/6.1", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.jar" + "https://repo.gradle.org/gradle/libs-releases/org/gradle/gradle-tooling-api/6.1/gradle-tooling-api-6.1.pom" ], - "sha256": "ea6ab03286a534ab24f123b845a107c7a53b679f6ee56bdc34b5dd1b0fd7b6f4" + "sha256": "b01078d8a2beed5ec68e459156f99daf9be89b1819bcd9744dcba2793276cb02" }, { - "name": "org.jetbrains.kotlin-kotlin-compiler-embeddable-1.3.41-pom", - "filename": "kotlin-compiler-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.41/kotlin-compiler-embeddable-1.3.41.pom" - ], - "sha256": "a630bdc69212fc0ac4a24059089eb246bd4f04f334a6f1e77952b373d0cdad8e" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.41-jar", - "filename": "kotlin-reflect-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.jar" - ], - "sha256": "01d469878c6853a607baaadf869c7474b971abe6dd2cb74f244bea0ffb453c76" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.41-pom", - "filename": "kotlin-reflect-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotlin-reflect-1.3.41.pom" - ], - "sha256": "4d0e8480bf227cd23d21d245dc9fe47e92056af5a6f367bc886bf43278c44146" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.50-jar", - "filename": "kotlin-reflect-1.3.50.jar", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" - ], - "sha256": "64583199ea5a54aefd1bd1595288925f784226ee562d1dd279011c6075b3d7a4" - }, - { - "name": "org.jetbrains.kotlin-kotlin-reflect-1.3.50-pom", - "filename": "kotlin-reflect-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" - ], - "sha256": "8745181e5a3e0bafefd46309c6b810df7253f379feb985131eaf8d4d9c302635" - }, - { - "name": "org.jetbrains.kotlin-kotlin-script-runtime-1.3.41-jar", - "filename": "kotlin-script-runtime-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.jar" - ], - "sha256": "ac184612f258b460b5af4ca47f6bee0bab20a46fa818b86697ba41ef29626a31" - }, - { - "name": "org.jetbrains.kotlin-kotlin-script-runtime-1.3.41-pom", - "filename": "kotlin-script-runtime-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.3.41/kotlin-script-runtime-1.3.41.pom" - ], - "sha256": "9bd39a256bdd9f7a8689f095c7eff85f8504ae03789e12cf20e6bbc689baefd1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-common-1.3.41-jar", - "filename": "kotlin-scripting-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.jar" - ], - "sha256": "fe9033bf39eb38d3daed1649f54b3321478901b9891c24482a4a06603d5b137f" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-common-1.3.41-pom", - "filename": "kotlin-scripting-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.3.41/kotlin-scripting-common-1.3.41.pom" - ], - "sha256": "21253e34109f982b0b1586367e47b5c91bc630f5071e77f5bf3228bb4d4d86de" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-embeddable-1.3.41-jar", - "filename": "kotlin-scripting-compiler-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.jar" - ], - "sha256": "c2da2d19f569e8369c2f55affa0dee5f50771bc3685697ee948ee29a16d0c3c1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-embeddable-1.3.41-pom", - "filename": "kotlin-scripting-compiler-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.41/kotlin-scripting-compiler-embeddable-1.3.41.pom" - ], - "sha256": "024b8b34dbbda4c657bf4c9f68acb45174f9350d4c6542278855124442d491d3" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-impl-embeddable-1.3.41-jar", - "filename": "kotlin-scripting-compiler-impl-embeddable-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.jar" - ], - "sha256": "854c39cdd705be01956439ae70f44a785cd0ba66388299f98bc0af75db328f29" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-compiler-impl-embeddable-1.3.41-pom", - "filename": "kotlin-scripting-compiler-impl-embeddable-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.41/kotlin-scripting-compiler-impl-embeddable-1.3.41.pom" - ], - "sha256": "bd29d1efdfcd51ae20d252ca66f2ea84cf3671ce323cd25518ff44a52c9a5dc1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-jvm-1.3.41-jar", - "filename": "kotlin-scripting-jvm-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.jar" - ], - "sha256": "50ad890f1dfa33e9cdeba550fab2e98e88e6f03624461cd11c7f5eb4a41de7a1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-scripting-jvm-1.3.41-pom", - "filename": "kotlin-scripting-jvm-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.41/kotlin-scripting-jvm-1.3.41.pom" - ], - "sha256": "fda06e8c1b1c47e720a80176f2269e43fc95b849045bf4006b7003c964f68a49" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.41-jar", - "filename": "kotlin-stdlib-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.jar" - ], - "sha256": "6c91dea17d7dce5f0b550c3de3305767e5fb46247b6d1eb7eca0ca1fe18458de" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.41-pom", - "filename": "kotlin-stdlib-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.41/kotlin-stdlib-common-1.3.41.pom" - ], - "sha256": "d2e537cd1f7705276242d8cc903a0286b6dc86b41b6e728e967ef719022f2e15" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.50-jar", - "filename": "kotlin-stdlib-common-1.3.50.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.jar" - ], - "sha256": "8ce678e88e4ba018b66dacecf952471e4d7dfee156a8a819760a5a5ff29d323c" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-common-1.3.50-pom", - "filename": "kotlin-stdlib-common-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom" - ], - "sha256": "b6396fe802d7bc76a381485e266cb975f3b2f2d3dd9bf7213aab6ca27a561fc1" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.41-jar", - "filename": "kotlin-stdlib-jdk7-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.jar" - ], - "sha256": "25e2409aba0ec37d2fd7c77727d7835b511879de8d9bf4862af0b493aabbe39e" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.41-pom", - "filename": "kotlin-stdlib-jdk7-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.41/kotlin-stdlib-jdk7-1.3.41.pom" - ], - "sha256": "54c3962d2cf839d41bbee8b4817a6b2d06990c305c2efea655f64973d468a5fd" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.50-jar", - "filename": "kotlin-stdlib-jdk7-1.3.50.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.jar" - ], - "sha256": "9a026639e76212f8d57b86d55b075394c2e009f1979110751d34c05c5f75d57b" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk7-1.3.50-pom", - "filename": "kotlin-stdlib-jdk7-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom" - ], - "sha256": "a3aef46388ee96e975110db51df3ab794c87d892bdbc6d5a49bf926e4779438b" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.41-jar", - "filename": "kotlin-stdlib-jdk8-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.jar" - ], - "sha256": "f7dbbaee3e0841758187a213c052388a4e619e11c87ab16f4bc229cfe7ce5fed" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.41-pom", - "filename": "kotlin-stdlib-jdk8-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.41/kotlin-stdlib-jdk8-1.3.41.pom" - ], - "sha256": "e3856758c3bb08b7c97ddcd493521c5e0bd0741717c93b292bf1a541513af082" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.41-jar", - "filename": "kotlin-stdlib-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.jar" - ], - "sha256": "6ea3d0921b26919b286f05cbdb906266666a36f9a7c096197114f7495708ffbc" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.41-pom", - "filename": "kotlin-stdlib-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.41", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotlin-stdlib-1.3.41.pom" - ], - "sha256": "785b5b66f1146317d5ed5b18c8e0c10f83cd5c909434c799a4da9823f028cd63" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.50-jar", - "filename": "kotlin-stdlib-1.3.50.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar" - ], - "sha256": "e6f05746ee0366d0b52825a090fac474dcf44082c9083bbb205bd16976488d6c" - }, - { - "name": "org.jetbrains.kotlin-kotlin-stdlib-1.3.50-pom", - "filename": "kotlin-stdlib-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.50", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom" - ], - "sha256": "704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61" - }, - { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.1.1-jar", - "filename": "kotlinx-coroutines-core-1.1.1.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.jar" - ], - "sha256": "ac423f8a0aa4b4e74529696ff82c0171f81a8c8ab182a1965dff25e69c1f7844" - }, - { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.1.1-pom", - "filename": "kotlinx-coroutines-core-1.1.1.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1", - "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.pom" - ], - "sha256": "82fe57e97f3f91561fe29bca615d45908ecb0ddea3e8d2cb0affd06de964872f" - }, - { - "name": "org.jetbrains-annotations-13.0-jar", - "filename": "annotations-13.0.jar", + "id": { + "group": "org.jetbrains", + "name": "annotations", + "version": "13.0", + "type": "jar", + "extension": "jar" + }, + "name": "annotations-13.0.jar", "path": "org/jetbrains/annotations/13.0", "urls": [ "https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.jar", @@ -1704,8 +2336,14 @@ "sha256": "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" }, { - "name": "org.jetbrains-annotations-13.0-pom", - "filename": "annotations-13.0.pom", + "id": { + "group": "org.jetbrains", + "name": "annotations", + "version": "13.0", + "type": "pom", + "extension": "pom" + }, + "name": "annotations-13.0.pom", "path": "org/jetbrains/annotations/13.0", "urls": [ "https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0.pom", @@ -1714,8 +2352,622 @@ "sha256": "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" }, { - "name": "org.slf4j-slf4j-api-2.0.0-alpha1-jar", - "filename": "slf4j-api-2.0.0-alpha1.jar", + "id": { + "group": "org.jetbrains.intellij.deps", + "name": "trove4j", + "version": "1.0.20181211", + "type": "jar", + "extension": "jar" + }, + "name": "trove4j-1.0.20181211.jar", + "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.jar" + ], + "sha256": "affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601" + }, + { + "id": { + "group": "org.jetbrains.intellij.deps", + "name": "trove4j", + "version": "1.0.20181211", + "type": "pom", + "extension": "pom" + }, + "name": "trove4j-1.0.20181211.pom", + "path": "org/jetbrains/intellij/deps/trove4j/1.0.20181211", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom" + ], + "sha256": "310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-annotation-processing-gradle", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-annotation-processing-gradle-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.jar" + ], + "sha256": "77ec8e3031145c8952ee3881bd53a243d8d928a69358f7262e585b8aaa08098b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-annotation-processing-gradle", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-annotation-processing-gradle-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-annotation-processing-gradle/1.3.61/kotlin-annotation-processing-gradle-1.3.61.pom" + ], + "sha256": "af91455f4dfe60bf68b3b3480cb6eaf89ba9ef0d834e70fc5c6d5004b25e6f67" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-compiler-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.jar" + ], + "sha256": "05a964b4dfcfca057dbcfc352c6a394ba411b9914d956af4cc69f4e64da818e9" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-compiler-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-compiler-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.3.61/kotlin-compiler-embeddable-1.3.61.pom" + ], + "sha256": "281123163ddc5aa8eda536046ce059be9cb6fe24e6307d1fa76585944f9fce80" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-daemon-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.jar" + ], + "sha256": "81ac228adb7c4d39bc4640ece66573ec6f752cbfa13d9b6959e010de55df97af" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-daemon-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-daemon-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-daemon-embeddable/1.3.61/kotlin-daemon-embeddable-1.3.61.pom" + ], + "sha256": "5e4fca06368d95aa68783bb24b74a2176ba25846b581be290a79ef06be722169" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.50", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-reflect-1.3.50.jar", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.jar" + ], + "sha256": "64583199ea5a54aefd1bd1595288925f784226ee562d1dd279011c6075b3d7a4" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.50", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-reflect-1.3.50.pom", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.50/kotlin-reflect-1.3.50.pom" + ], + "sha256": "8745181e5a3e0bafefd46309c6b810df7253f379feb985131eaf8d4d9c302635" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-reflect-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.jar" + ], + "sha256": "143e715c10ff6d65eb5a7695be7b696c6e013702dff103d23ba54760bf93867b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-reflect", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-reflect-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-reflect/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-reflect/1.3.61/kotlin-reflect-1.3.61.pom" + ], + "sha256": "b2b8add63c5ce9b67571ed469f7c37fd043ee2420206255e96a146018d8e2fa0" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-script-runtime", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-script-runtime-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.jar" + ], + "sha256": "14ac9a3db7e85983f51f80e5ba027f21575ce2241be1c05f029dd836ac38ec48" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-script-runtime", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-script-runtime-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-script-runtime/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-script-runtime/1.3.61/kotlin-script-runtime-1.3.61.pom" + ], + "sha256": "ea189ef8e59b70fd538693a85aa3bf2fb83b08bf7e1d06b3a5dfcbff75e792c0" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.jar" + ], + "sha256": "3041dbb12b63e46c9f4b43db012381b89109e313208b583ce66a1e622294c1ec" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-common/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-common/1.3.61/kotlin-scripting-common-1.3.61.pom" + ], + "sha256": "f13054cff12fa6d70452f24825b09db5cd0547a00e91a8e5dff74a3e9b4afa69" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-compiler-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.jar" + ], + "sha256": "190d1bb496a56642bdb49f07f48bc64c67d6e71c951124b8a88d4f69d5edd50b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-compiler-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/1.3.61/kotlin-scripting-compiler-embeddable-1.3.61.pom" + ], + "sha256": "35f7b58c379dfe7afc7e3c0715de49c17a75900e144ccc63578df3a4ac5e78c1" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-impl-embeddable", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-compiler-impl-embeddable-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.jar" + ], + "sha256": "3885815dfaad81221a55b5c5332664ab596fd76159c6e1b4c85d866af0048255" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-compiler-impl-embeddable", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-compiler-impl-embeddable-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/1.3.61/kotlin-scripting-compiler-impl-embeddable-1.3.61.pom" + ], + "sha256": "a3a4d698bbdb2e99d3486b214ddcf97d1b8c7f40adcc62f4ebc251f2553e717d" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-jvm", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-scripting-jvm-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.jar" + ], + "sha256": "b76fddd6d9a7cfb5de9037048677520baec0547210b82d3c3f26d170396414b8" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-scripting-jvm", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-scripting-jvm-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.61/kotlin-scripting-jvm-1.3.61.pom" + ], + "sha256": "558c9db4916819c7b33c2bad718ce2dca22250bb3ce84f049edbeae9bb2ff1cd" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.50", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-1.3.50.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar" + ], + "sha256": "e6f05746ee0366d0b52825a090fac474dcf44082c9083bbb205bd16976488d6c" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.50", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-1.3.50.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom" + ], + "sha256": "704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.jar" + ], + "sha256": "e51e512619a7e7650a30eb4eb3e9c03e6909c7b5e3c026404e076254c098b932" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.3.61/kotlin-stdlib-1.3.61.pom" + ], + "sha256": "dbe5babcd8d43e9b08c2845680b53fc1bb3e051c4805802ddd0ed3e8e2c50a84" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.50", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-common-1.3.50.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.jar" + ], + "sha256": "8ce678e88e4ba018b66dacecf952471e4d7dfee156a8a819760a5a5ff29d323c" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.50", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-common-1.3.50.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom" + ], + "sha256": "b6396fe802d7bc76a381485e266cb975f3b2f2d3dd9bf7213aab6ca27a561fc1" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.jar" + ], + "sha256": "a2e7f341cf3047b5f00a1917ef777d323cdab2a57377468b8ed62aa31469cf7f" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.61/kotlin-stdlib-common-1.3.61.pom" + ], + "sha256": "e22db009bb1a61636d9425635989736db5e3fca494809abf244468dc474cfc04" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.50", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-jdk7-1.3.50.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.jar" + ], + "sha256": "9a026639e76212f8d57b86d55b075394c2e009f1979110751d34c05c5f75d57b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.50", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-jdk7-1.3.50.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom" + ], + "sha256": "a3aef46388ee96e975110db51df3ab794c87d892bdbc6d5a49bf926e4779438b" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-jdk7-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.jar" + ], + "sha256": "11f4a57e3e7d81f3f152d5dcefe39bd77614b5a94125ff3b11526b0a19ac3989" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk7", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-jdk7-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.61/kotlin-stdlib-jdk7-1.3.61.pom" + ], + "sha256": "c416080aeabdb9118a08ee78c28e2856038cd85858422a71f7c46bf276f667a7" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk8", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-stdlib-jdk8-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.jar" + ], + "sha256": "3839ba7deb798375da1807bc469d1cf315db7a6275599f733184374772ec3b21" + }, + { + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-stdlib-jdk8", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-stdlib-jdk8-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.61/kotlin-stdlib-jdk8-1.3.61.pom" + ], + "sha256": "e30187e5720ca640b8e68686f20dd0250dcef0193d56e5569c3c4a61277312b6" + }, + { + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.2.1", + "type": "jar", + "extension": "jar" + }, + "name": "kotlinx-coroutines-core-1.2.1.jar", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.jar" + ], + "sha256": "7177ed4629704537e0252537629886f5409526ecd041d8d8e308e20624b14394" + }, + { + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.2.1", + "type": "pom", + "extension": "pom" + }, + "name": "kotlinx-coroutines-core-1.2.1.pom", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1", + "urls": [ + "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.2.1/kotlinx-coroutines-core-1.2.1.pom" + ], + "sha256": "6f7523ea8a56d7f12d11a004cfe5a4577bfba3ed6c84cc5ac48b72d54975552c" + }, + { + "id": { + "group": "org.slf4j", + "name": "slf4j-api", + "version": "2.0.0-alpha1", + "type": "jar", + "extension": "jar" + }, + "name": "slf4j-api-2.0.0-alpha1.jar", "path": "org/slf4j/slf4j-api/2.0.0-alpha1", "urls": [ "https://jcenter.bintray.com/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.jar", @@ -1724,8 +2976,14 @@ "sha256": "8df06cc146b8638a24cefb669d20f4bdb2c4497d5047c548a0a190df6f97c3a5" }, { - "name": "org.slf4j-slf4j-api-2.0.0-alpha1-pom", - "filename": "slf4j-api-2.0.0-alpha1.pom", + "id": { + "group": "org.slf4j", + "name": "slf4j-api", + "version": "2.0.0-alpha1", + "type": "pom", + "extension": "pom" + }, + "name": "slf4j-api-2.0.0-alpha1.pom", "path": "org/slf4j/slf4j-api/2.0.0-alpha1", "urls": [ "https://jcenter.bintray.com/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.pom", @@ -1734,8 +2992,14 @@ "sha256": "a775e6bbf89895978ea3b702aa759fd42c0f128e63d0a589fd5cf5d8afbf5451" }, { - "name": "org.slf4j-slf4j-parent-2.0.0-alpha1-pom", - "filename": "slf4j-parent-2.0.0-alpha1.pom", + "id": { + "group": "org.slf4j", + "name": "slf4j-parent", + "version": "2.0.0-alpha1", + "type": "pom", + "extension": "pom" + }, + "name": "slf4j-parent-2.0.0-alpha1.pom", "path": "org/slf4j/slf4j-parent/2.0.0-alpha1", "urls": [ "https://jcenter.bintray.com/org/slf4j/slf4j-parent/2.0.0-alpha1/slf4j-parent-2.0.0-alpha1.pom", @@ -1744,8 +3008,14 @@ "sha256": "fd3edb9fd9b7cabd67a0c29c0c9c0a6d1ae7a40053956aec281f42ccad1bdcf1" }, { - "name": "org.slf4j-slf4j-simple-2.0.0-alpha1-jar", - "filename": "slf4j-simple-2.0.0-alpha1.jar", + "id": { + "group": "org.slf4j", + "name": "slf4j-simple", + "version": "2.0.0-alpha1", + "type": "jar", + "extension": "jar" + }, + "name": "slf4j-simple-2.0.0-alpha1.jar", "path": "org/slf4j/slf4j-simple/2.0.0-alpha1", "urls": [ "https://jcenter.bintray.com/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.jar", @@ -1754,8 +3024,14 @@ "sha256": "3b6f446dec6cb5e8a6b1c1e85d7d756cdc934fec688464cc6bd201d95cd387cf" }, { - "name": "org.slf4j-slf4j-simple-2.0.0-alpha1-pom", - "filename": "slf4j-simple-2.0.0-alpha1.pom", + "id": { + "group": "org.slf4j", + "name": "slf4j-simple", + "version": "2.0.0-alpha1", + "type": "pom", + "extension": "pom" + }, + "name": "slf4j-simple-2.0.0-alpha1.pom", "path": "org/slf4j/slf4j-simple/2.0.0-alpha1", "urls": [ "https://jcenter.bintray.com/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.pom", @@ -1764,8 +3040,14 @@ "sha256": "df3a810360871ab8c6c3c852446a162613dba3184f99e26082cc5d7b9138c475" }, { - "name": "org.sonatype.oss-oss-parent-7-pom", - "filename": "oss-parent-7.pom", + "id": { + "group": "org.sonatype.oss", + "name": "oss-parent", + "version": "7", + "type": "pom", + "extension": "pom" + }, + "name": "oss-parent-7.pom", "path": "org/sonatype/oss/oss-parent/7", "urls": [ "https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom", @@ -1774,8 +3056,14 @@ "sha256": "b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" }, { - "name": "com.christophsturm-filepeek-0.1.1-jar", - "filename": "filepeek-0.1.1.jar", + "id": { + "group": "com.christophsturm", + "name": "filepeek", + "version": "0.1.1", + "type": "jar", + "extension": "jar" + }, + "name": "filepeek-0.1.1.jar", "path": "com/christophsturm/filepeek/0.1.1", "urls": [ "https://jcenter.bintray.com/com/christophsturm/filepeek/0.1.1/filepeek-0.1.1.jar", @@ -1784,8 +3072,14 @@ "sha256": "fbc8ee25f6a7ddf47d9ff62565af414c4b20356f5bd8a679586de1654ff99987" }, { - "name": "com.christophsturm-filepeek-0.1.1-pom", - "filename": "filepeek-0.1.1.pom", + "id": { + "group": "com.christophsturm", + "name": "filepeek", + "version": "0.1.1", + "type": "pom", + "extension": "pom" + }, + "name": "filepeek-0.1.1.pom", "path": "com/christophsturm/filepeek/0.1.1", "urls": [ "https://jcenter.bintray.com/com/christophsturm/filepeek/0.1.1/filepeek-0.1.1.pom", @@ -1794,188 +3088,126 @@ "sha256": "719692dc9755d69a237c64b8ae365e4bdc7041a5424ecc853522954633208ad1" }, { - "name": "io.strikt-strikt-core-0.22.2-jar", - "filename": "strikt-core-0.22.2.jar", - "path": "io/strikt/strikt-core/0.22.2", + "id": { + "group": "dev.minutest", + "name": "minutest", + "version": "1.10.0", + "type": "jar", + "extension": "jar" + }, + "name": "minutest-1.10.0.jar", + "path": "dev/minutest/minutest/1.10.0", "urls": [ - "https://jcenter.bintray.com/io/strikt/strikt-core/0.22.2/strikt-core-0.22.2.jar", - "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.22.2/strikt-core-0.22.2.jar" + "https://jcenter.bintray.com/dev/minutest/minutest/1.10.0/minutest-1.10.0.jar", + "https://repo.gradle.org/gradle/libs-releases/dev/minutest/minutest/1.10.0/minutest-1.10.0.jar" ], - "sha256": "09d7fe76c00b13df031f601d92cfbfc88772fd7425db33127fad132ecf97cdfd" + "sha256": "984ba01cdc340fba060c8ba6734bac45eb7936386b02c5244adfeefd2db2844e" }, { - "name": "io.strikt-strikt-core-0.22.2-pom", - "filename": "strikt-core-0.22.2.pom", - "path": "io/strikt/strikt-core/0.22.2", + "id": { + "group": "dev.minutest", + "name": "minutest", + "version": "1.10.0", + "type": "pom", + "extension": "pom" + }, + "name": "minutest-1.10.0.pom", + "path": "dev/minutest/minutest/1.10.0", "urls": [ - "https://jcenter.bintray.com/io/strikt/strikt-core/0.22.2/strikt-core-0.22.2.pom", - "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.22.2/strikt-core-0.22.2.pom" + "https://jcenter.bintray.com/dev/minutest/minutest/1.10.0/minutest-1.10.0.pom", + "https://repo.gradle.org/gradle/libs-releases/dev/minutest/minutest/1.10.0/minutest-1.10.0.pom" ], - "sha256": "9ffcc191618827b8027c3263f4c618dc3724b05ff3a43e8b89f979e4c614fd9b" + "sha256": "d4fbca78beee70d50222bddcb7262c8f173f300581db783b42883f0d364ff151" }, { - "name": "javax.inject-javax.inject-1-jar", - "filename": "javax.inject-1.jar", - "path": "javax/inject/javax.inject/1", + "id": { + "group": "io.github.classgraph", + "name": "classgraph", + "version": "4.8.28", + "type": "jar", + "extension": "jar" + }, + "name": "classgraph-4.8.28.jar", + "path": "io/github/classgraph/classgraph/4.8.28", "urls": [ - "https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.jar", - "https://repo.gradle.org/gradle/libs-releases/javax/inject/javax.inject/1/javax.inject-1.jar" + "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.jar", + "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.jar" ], - "sha256": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff" + "sha256": "bddc6eb9bcd88d1054d362c4a870c18b0a6d74f4ce7961a527a03748a16f8e31" }, { - "name": "javax.inject-javax.inject-1-pom", - "filename": "javax.inject-1.pom", - "path": "javax/inject/javax.inject/1", + "id": { + "group": "io.github.classgraph", + "name": "classgraph", + "version": "4.8.28", + "type": "pom", + "extension": "pom" + }, + "name": "classgraph-4.8.28.pom", + "path": "io/github/classgraph/classgraph/4.8.28", "urls": [ - "https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.pom", - "https://repo.gradle.org/gradle/libs-releases/javax/inject/javax.inject/1/javax.inject-1.pom" + "https://jcenter.bintray.com/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.pom", + "https://repo.gradle.org/gradle/libs-releases/io/github/classgraph/classgraph/4.8.28/classgraph-4.8.28.pom" ], - "sha256": "943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa" + "sha256": "75d61da98c46d79a3a548a952bd806020f808c75ccd21958a6c791cfbfa0481e" }, { - "name": "org.apache.commons-commons-lang3-3.8.1-jar", - "filename": "commons-lang3-3.8.1.jar", - "path": "org/apache/commons/commons-lang3/3.8.1", + "id": { + "group": "io.strikt", + "name": "strikt-core", + "version": "0.23.4", + "type": "jar", + "extension": "jar" + }, + "name": "strikt-core-0.23.4.jar", + "path": "io/strikt/strikt-core/0.23.4", "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar" + "https://jcenter.bintray.com/io/strikt/strikt-core/0.23.4/strikt-core-0.23.4.jar", + "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.23.4/strikt-core-0.23.4.jar" ], - "sha256": "dac807f65b07698ff39b1b07bfef3d87ae3fd46d91bbf8a2bc02b2a831616f68" + "sha256": "e64a49730554f779064638f169d83925b2f00bfdd7b647bc275f9460c9c97d8f" }, { - "name": "org.apache.commons-commons-lang3-3.8.1-pom", - "filename": "commons-lang3-3.8.1.pom", - "path": "org/apache/commons/commons-lang3/3.8.1", + "id": { + "group": "io.strikt", + "name": "strikt-core", + "version": "0.23.4", + "type": "pom", + "extension": "pom" + }, + "name": "strikt-core-0.23.4.pom", + "path": "io/strikt/strikt-core/0.23.4", "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom" + "https://jcenter.bintray.com/io/strikt/strikt-core/0.23.4/strikt-core-0.23.4.pom", + "https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.23.4/strikt-core-0.23.4.pom" ], - "sha256": "ec8e09f75411685205bd0d9d7872cc3622e67c76df44a0a227b278bea04458d5" + "sha256": "e4280689a4843bcca02327f575084eb48468f387308ba01789fac19aa57483b7" }, { - "name": "org.apache.commons-commons-parent-47-pom", - "filename": "commons-parent-47.pom", - "path": "org/apache/commons/commons-parent/47", + "id": { + "group": "org.apache", + "name": "apache", + "version": "7", + "type": "pom", + "extension": "pom" + }, + "name": "apache-7.pom", + "path": "org/apache/apache/7", "urls": [ - "https://jcenter.bintray.com/org/apache/commons/commons-parent/47/commons-parent-47.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/commons/commons-parent/47/commons-parent-47.pom" + "https://jcenter.bintray.com/org/apache/apache/7/apache-7.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/7/apache-7.pom" ], - "sha256": "8a8ecb570553bf9f1ffae211a8d4ca9ee630c17afe59293368fba7bd9b42fcb7" + "sha256": "1397ce1db433adc9f223dbf07496d133681448751f4ae29e58f68e78fb4b6c25" }, { - "name": "org.apache.maven-maven-artifact-3.6.2-jar", - "filename": "maven-artifact-3.6.2.jar", - "path": "org/apache/maven/maven-artifact/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-artifact/3.6.2/maven-artifact-3.6.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-artifact/3.6.2/maven-artifact-3.6.2.jar" - ], - "sha256": "66a5b056d2f19bf3ef2faf94e2a85da47a5051ac85a69688ce874ddc408fe52d" - }, - { - "name": "org.apache.maven-maven-artifact-3.6.2-pom", - "filename": "maven-artifact-3.6.2.pom", - "path": "org/apache/maven/maven-artifact/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-artifact/3.6.2/maven-artifact-3.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-artifact/3.6.2/maven-artifact-3.6.2.pom" - ], - "sha256": "70cbd5cb06884e7e338337c96ea9fa00cd1c6d08c5233c3f560132fc00a0b369" - }, - { - "name": "org.apache.maven-maven-builder-support-3.6.2-jar", - "filename": "maven-builder-support-3.6.2.jar", - "path": "org/apache/maven/maven-builder-support/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-builder-support/3.6.2/maven-builder-support-3.6.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-builder-support/3.6.2/maven-builder-support-3.6.2.jar" - ], - "sha256": "e78f8627a9c342182c31f05cfb39e92c11ccb41cc03f06a9ec81f29cf5959817" - }, - { - "name": "org.apache.maven-maven-builder-support-3.6.2-pom", - "filename": "maven-builder-support-3.6.2.pom", - "path": "org/apache/maven/maven-builder-support/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-builder-support/3.6.2/maven-builder-support-3.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-builder-support/3.6.2/maven-builder-support-3.6.2.pom" - ], - "sha256": "08a8b8968373d2927d677c721747a966a9ab92adf8fc0cdfafa83f9002988734" - }, - { - "name": "org.apache.maven-maven-model-builder-3.6.2-jar", - "filename": "maven-model-builder-3.6.2.jar", - "path": "org/apache/maven/maven-model-builder/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-model-builder/3.6.2/maven-model-builder-3.6.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-model-builder/3.6.2/maven-model-builder-3.6.2.jar" - ], - "sha256": "378d8a6a9ad170c219fa1afa28e6179c85bbc7fd652d59be25aae07e33978e99" - }, - { - "name": "org.apache.maven-maven-model-builder-3.6.2-pom", - "filename": "maven-model-builder-3.6.2.pom", - "path": "org/apache/maven/maven-model-builder/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-model-builder/3.6.2/maven-model-builder-3.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-model-builder/3.6.2/maven-model-builder-3.6.2.pom" - ], - "sha256": "56e4c174a5011d1ea468a62fbe5353f51810d682a57cad8b66859d01d549b454" - }, - { - "name": "org.apache.maven-maven-model-3.6.2-jar", - "filename": "maven-model-3.6.2.jar", - "path": "org/apache/maven/maven-model/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-model/3.6.2/maven-model-3.6.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-model/3.6.2/maven-model-3.6.2.jar" - ], - "sha256": "f4ada31d7217efc11d2264dec3716623cefa3440cfb2b6b1dcc640a825159a7d" - }, - { - "name": "org.apache.maven-maven-model-3.6.2-pom", - "filename": "maven-model-3.6.2.pom", - "path": "org/apache/maven/maven-model/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-model/3.6.2/maven-model-3.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-model/3.6.2/maven-model-3.6.2.pom" - ], - "sha256": "23049400bad289caa081bc5d28617ae0c2c14c67d35158903112063a9a44ab7b" - }, - { - "name": "org.apache.maven-maven-parent-33-pom", - "filename": "maven-parent-33.pom", - "path": "org/apache/maven/maven-parent/33", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven-parent/33/maven-parent-33.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-parent/33/maven-parent-33.pom" - ], - "sha256": "3856e3fcd169502d5f12fe2452604ebf6c7c025f15656bfa558ea99ed29d73ea" - }, - { - "name": "org.apache.maven-maven-3.6.2-pom", - "filename": "maven-3.6.2.pom", - "path": "org/apache/maven/maven/3.6.2", - "urls": [ - "https://jcenter.bintray.com/org/apache/maven/maven/3.6.2/maven-3.6.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven/3.6.2/maven-3.6.2.pom" - ], - "sha256": "60850dafebc746b5ce04ae1cc0073d81d346c0d54c32917d1357e8fd6960e0d1" - }, - { - "name": "org.apache-apache-19-pom", - "filename": "apache-19.pom", - "path": "org/apache/apache/19", - "urls": [ - "https://jcenter.bintray.com/org/apache/apache/19/apache-19.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apache/apache/19/apache-19.pom" - ], - "sha256": "91f7a33096ea69bac2cbaf6d01feb934cac002c48d8c8cfa9c240b40f1ec21df" - }, - { - "name": "org.apache-apache-21-pom", - "filename": "apache-21.pom", + "id": { + "group": "org.apache", + "name": "apache", + "version": "21", + "type": "pom", + "extension": "pom" + }, + "name": "apache-21.pom", "path": "org/apache/apache/21", "urls": [ "https://jcenter.bintray.com/org/apache/apache/21/apache-21.pom", @@ -1984,68 +3216,142 @@ "sha256": "af10c108da014f17cafac7b52b2b4b5a3a1c18265fa2af97a325d9143537b380" }, { - "name": "org.apiguardian-apiguardian-api-1.0.0-jar", - "filename": "apiguardian-api-1.0.0.jar", - "path": "org/apiguardian/apiguardian-api/1.0.0", + "id": { + "group": "org.apache.ivy", + "name": "ivy", + "version": "2.5.0", + "type": "jar", + "extension": "jar" + }, + "name": "ivy-2.5.0.jar", + "path": "org/apache/ivy/ivy/2.5.0", "urls": [ - "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar", - "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar" + "https://jcenter.bintray.com/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar" ], - "sha256": "1f58b77470d8d147a0538d515347dd322f49a83b9e884b8970051160464b65b3" + "sha256": "2f4c835b52311df922f8a8eb057843de5485088b234ccd03e478b9066b5e6bfc" }, { - "name": "org.apiguardian-apiguardian-api-1.0.0-pom", - "filename": "apiguardian-api-1.0.0.pom", - "path": "org/apiguardian/apiguardian-api/1.0.0", + "id": { + "group": "org.apache.ivy", + "name": "ivy", + "version": "2.5.0", + "type": "pom", + "extension": "pom" + }, + "name": "ivy-2.5.0.pom", + "path": "org/apache/ivy/ivy/2.5.0", "urls": [ - "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.pom", - "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.pom" + "https://jcenter.bintray.com/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.pom" ], - "sha256": "2ecc15d2614124cb9630c7173efcae1776cf43588a8f3ab1b04684b8dbe02489" + "sha256": "516106ddc6a4fc14445e5ea309710faba423d4591ed7667fff5f8c074ace2f18" }, { - "name": "org.codehaus.plexus-plexus-interpolation-1.25-jar", - "filename": "plexus-interpolation-1.25.jar", - "path": "org/codehaus/plexus/plexus-interpolation/1.25", + "id": { + "group": "org.apache.maven", + "name": "maven", + "version": "3.6.3", + "type": "pom", + "extension": "pom" + }, + "name": "maven-3.6.3.pom", + "path": "org/apache/maven/maven/3.6.3", "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.jar", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.jar" + "https://jcenter.bintray.com/org/apache/maven/maven/3.6.3/maven-3.6.3.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven/3.6.3/maven-3.6.3.pom" ], - "sha256": "e003802501574637f7abdc4e83e6d509a31e9ff825d12da6d1e419acf9688705" + "sha256": "d2d86245ea66149bc14d2dd72bbb961f964dd658b809a0573252c06531eeec16" }, { - "name": "org.codehaus.plexus-plexus-interpolation-1.25-pom", - "filename": "plexus-interpolation-1.25.pom", - "path": "org/codehaus/plexus/plexus-interpolation/1.25", + "id": { + "group": "org.apache.maven", + "name": "maven-parent", + "version": "33", + "type": "pom", + "extension": "pom" + }, + "name": "maven-parent-33.pom", + "path": "org/apache/maven/maven-parent/33", "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.pom", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.pom" + "https://jcenter.bintray.com/org/apache/maven/maven-parent/33/maven-parent-33.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-parent/33/maven-parent-33.pom" ], - "sha256": "9eb551c0ca3ec1354f10bbc5a037a89809d4e32bac9f55a4431e4be0eb8f0d8f" + "sha256": "3856e3fcd169502d5f12fe2452604ebf6c7c025f15656bfa558ea99ed29d73ea" }, { - "name": "org.codehaus.plexus-plexus-utils-3.2.1-jar", - "filename": "plexus-utils-3.2.1.jar", - "path": "org/codehaus/plexus/plexus-utils/3.2.1", + "id": { + "group": "org.apache.maven", + "name": "maven-repository-metadata", + "version": "3.6.3", + "type": "jar", + "extension": "jar" + }, + "name": "maven-repository-metadata-3.6.3.jar", + "path": "org/apache/maven/maven-repository-metadata/3.6.3", "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar" + "https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.jar", + "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.jar" ], - "sha256": "8d07b497bb8deb167ee5329cae87ef2043833bf52e4f15a5a9379cec447a5b2b" + "sha256": "2e7f850b20664a151e6ca73dd3af34e639901435c2fe717717e3cbc7ddead3d4" }, { - "name": "org.codehaus.plexus-plexus-utils-3.2.1-pom", - "filename": "plexus-utils-3.2.1.pom", - "path": "org/codehaus/plexus/plexus-utils/3.2.1", + "id": { + "group": "org.apache.maven", + "name": "maven-repository-metadata", + "version": "3.6.3", + "type": "pom", + "extension": "pom" + }, + "name": "maven-repository-metadata-3.6.3.pom", + "path": "org/apache/maven/maven-repository-metadata/3.6.3", "urls": [ - "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom" + "https://jcenter.bintray.com/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apache/maven/maven-repository-metadata/3.6.3/maven-repository-metadata-3.6.3.pom" ], - "sha256": "7a5001ab88105b4f37c4fab3b62d977316290a13f8b14c6684f25f2a32efdef1" + "sha256": "5398b22da433ace2c836f76773d8ff48fa53fa09e2e7a1eba65ff922b03c665e" }, { - "name": "org.codehaus.plexus-plexus-5.1-pom", - "filename": "plexus-5.1.pom", + "id": { + "group": "org.apiguardian", + "name": "apiguardian-api", + "version": "1.1.0", + "type": "jar", + "extension": "jar" + }, + "name": "apiguardian-api-1.1.0.jar", + "path": "org/apiguardian/apiguardian-api/1.1.0", + "urls": [ + "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar" + ], + "sha256": "a9aae9ff8ae3e17a2a18f79175e82b16267c246fbbd3ca9dfbbb290b08dcfdd4" + }, + { + "id": { + "group": "org.apiguardian", + "name": "apiguardian-api", + "version": "1.1.0", + "type": "pom", + "extension": "pom" + }, + "name": "apiguardian-api-1.1.0.pom", + "path": "org/apiguardian/apiguardian-api/1.1.0", + "urls": [ + "https://jcenter.bintray.com/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom" + ], + "sha256": "a945b9cb5cd9b77b2c711844e659c43ec070ef59d9f509fa9f4c1861b4862711" + }, + { + "id": { + "group": "org.codehaus.plexus", + "name": "plexus", + "version": "5.1", + "type": "pom", + "extension": "pom" + }, + "name": "plexus-5.1.pom", "path": "org/codehaus/plexus/plexus/5.1", "urls": [ "https://jcenter.bintray.com/org/codehaus/plexus/plexus/5.1/plexus-5.1.pom", @@ -2054,338 +3360,654 @@ "sha256": "a343e44ff5796aed0ea60be11454c935ce20ab1c5f164acc8da574482dcbc7e9" }, { - "name": "org.eclipse.sisu-org.eclipse.sisu.inject-0.3.3-jar", - "filename": "org.eclipse.sisu.inject-0.3.3.jar", - "path": "org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3", + "id": { + "group": "org.codehaus.plexus", + "name": "plexus-utils", + "version": "3.2.1", + "type": "jar", + "extension": "jar" + }, + "name": "plexus-utils-3.2.1.jar", + "path": "org/codehaus/plexus/plexus-utils/3.2.1", "urls": [ - "https://jcenter.bintray.com/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar" + "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar", + "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar" ], - "sha256": "c6935e0b7d362ed4ca768c9b71d5d4d98788ff0a79c0d2bb954c221a078b166b" + "sha256": "8d07b497bb8deb167ee5329cae87ef2043833bf52e4f15a5a9379cec447a5b2b" }, { - "name": "org.eclipse.sisu-org.eclipse.sisu.inject-0.3.3-pom", - "filename": "org.eclipse.sisu.inject-0.3.3.pom", - "path": "org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3", + "id": { + "group": "org.codehaus.plexus", + "name": "plexus-utils", + "version": "3.2.1", + "type": "pom", + "extension": "pom" + }, + "name": "plexus-utils-3.2.1.pom", + "path": "org/codehaus/plexus/plexus-utils/3.2.1", "urls": [ - "https://jcenter.bintray.com/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.pom" + "https://jcenter.bintray.com/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom", + "https://repo.gradle.org/gradle/libs-releases/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.pom" ], - "sha256": "2d7c4eabba6f7158557819fd55d6b3085822ae94a3c3e009482ef58d0f716853" + "sha256": "7a5001ab88105b4f37c4fab3b62d977316290a13f8b14c6684f25f2a32efdef1" }, { - "name": "org.eclipse.sisu-sisu-inject-0.3.3-pom", - "filename": "sisu-inject-0.3.3.pom", - "path": "org/eclipse/sisu/sisu-inject/0.3.3", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-api", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-gradle-plugin-api-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/eclipse/sisu/sisu-inject/0.3.3/sisu-inject-0.3.3.pom", - "https://repo.gradle.org/gradle/libs-releases/org/eclipse/sisu/sisu-inject/0.3.3/sisu-inject-0.3.3.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.jar" ], - "sha256": "6476b9c3d9a0314226b6f4ea41c2f1e5db1ceb04d031ca9650c7b0b99fa0af3d" + "sha256": "37523a505f0a7e524a9fd86b763175ceeeed29c331676c8e4a6c21d760e3543e" }, { - "name": "org.jetbrains.kotlin-kotlin-bom-1.3.50-pom", - "filename": "kotlin-bom-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-bom/1.3.50", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-api", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-gradle-plugin-api-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-bom/1.3.50/kotlin-bom-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-bom/1.3.50/kotlin-bom-1.3.50.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.61/kotlin-gradle-plugin-api-1.3.61.pom" ], - "sha256": "602adba8cb901317afe1af70cf690d600d605f6de527c8f3fe38176bf6a80022" + "sha256": "7b70f22cf83bbc6a7aa2a219b5e96e66ea7d9a5f630d4a48a2423af72294d5a9" }, { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-api-1.3.41-jar", - "filename": "kotlin-gradle-plugin-api-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-model", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-gradle-plugin-model-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.jar" ], - "sha256": "57b0e2951fde88baf8ffb92d72c5682c101a7c2c12c6c501a5b47f88f5b08696" + "sha256": "128eb2c9800f38ff62ae8b9ec11d75004f39b7d32a3cf89751fcbffcdd4da6b5" }, { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-api-1.3.41-pom", - "filename": "kotlin-gradle-plugin-api-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-gradle-plugin-model", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-gradle-plugin-model-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.3.41/kotlin-gradle-plugin-api-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.61/kotlin-gradle-plugin-model-1.3.61.pom" ], - "sha256": "dc338b55085bfc4cc2a98dc83c8365dbee976b9d9134ca845d42d0a3d4767937" + "sha256": "19d73513165a436a832e3e898c6e872fd28b6ade8ccfcb3baa51049f364b486c" }, { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-model-1.3.41-jar", - "filename": "kotlin-gradle-plugin-model-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-native-utils", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-native-utils-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-native-utils/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.jar" ], - "sha256": "8a703d706c44996993f9df34b916162b99b81417f7f9d351ca8d205f0325936d" + "sha256": "9780246da9087f5052b93af54d0165eb0a5fa1964761b4f1243a45ce02743b6f" }, { - "name": "org.jetbrains.kotlin-kotlin-gradle-plugin-model-1.3.41-pom", - "filename": "kotlin-gradle-plugin-model-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-native-utils", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-native-utils-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-native-utils/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-gradle-plugin-model/1.3.41/kotlin-gradle-plugin-model-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-native-utils/1.3.61/kotlin-native-utils-1.3.61.pom" ], - "sha256": "8763bd09455cecf1c9fabea3653bd2ac17bf31a1291a153fefca8e4f28de9043" + "sha256": "15f4627d4d22eef959e2710036c49b64b50ac77f535041fd2dfcf401b3fbd731" }, { - "name": "org.jetbrains.kotlin-kotlin-sam-with-receiver-1.3.41-jar", - "filename": "kotlin-sam-with-receiver-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-sam-with-receiver", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-sam-with-receiver-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.jar" ], - "sha256": "52ba0a7557a05f383983018818fa54389e985e1782f5d580a5f5190689fd217d" + "sha256": "b654b0c0fde9ea9f68d9aaf993064791070fc7d35274961095f5458c031ef559" }, { - "name": "org.jetbrains.kotlin-kotlin-sam-with-receiver-1.3.41-pom", - "filename": "kotlin-sam-with-receiver-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-sam-with-receiver", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-sam-with-receiver-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.41/kotlin-sam-with-receiver-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-sam-with-receiver/1.3.61/kotlin-sam-with-receiver-1.3.61.pom" ], - "sha256": "b2d7cd94ffce942ddd379db99044bff03f24863fcf41534d7c7be3d0e16bc34c" + "sha256": "8fa74d745c92f4c106d4652209a67a817ce703ce87b9d563fe01a9b305eb4214" }, { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.50-jar", - "filename": "kotlin-stdlib-jdk8-1.3.50.jar", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-test-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-test/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.3.61/kotlin-test-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.3.61/kotlin-test-1.3.61.jar" ], - "sha256": "1b351fb6e09c14b55525c74c1f4cf48942eae43c348b7bc764a5e6e423d4da0c" + "sha256": "b8d94c45400791a0b38381c13688408c24ff49ae0a4d0b409ce2199cc49485bd" }, { - "name": "org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.3.50-pom", - "filename": "kotlin-stdlib-jdk8-1.3.50.pom", - "path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-test-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-test/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.3.61/kotlin-test-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.3.61/kotlin-test-1.3.61.pom" ], - "sha256": "8674b002f66a2948981c4f6cb5987ec62ff3d54b6a2799a6d2cd23afb83f2ad3" + "sha256": "9adbbf07a98a2f9a02870721f44563b89d809e53dfa2c44281c7f111d5fbf1dd" }, { - "name": "org.jetbrains.kotlin-kotlin-test-annotations-common-1.3.41-jar", - "filename": "kotlin-test-annotations-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-annotations-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-test-annotations-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41/kotlin-test-annotations-common-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41/kotlin-test-annotations-common-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61/kotlin-test-annotations-common-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61/kotlin-test-annotations-common-1.3.61.jar" ], - "sha256": "dcc66f8bc23101a9cc93c5b17673e361dde4455816ae8e5c431a5a5846f9b5d8" + "sha256": "6d9b2d684e5068c6b2ffc8e2f966e679a304113b65748c18cd971ee031e3cc17" }, { - "name": "org.jetbrains.kotlin-kotlin-test-annotations-common-1.3.41-pom", - "filename": "kotlin-test-annotations-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-annotations-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-test-annotations-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41/kotlin-test-annotations-common-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.41/kotlin-test-annotations-common-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61/kotlin-test-annotations-common-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-annotations-common/1.3.61/kotlin-test-annotations-common-1.3.61.pom" ], - "sha256": "c4ab8ebd22e665f3300738da1224f85bcb18fdffe1874bcef1a9d988ffb3ea4f" + "sha256": "3a1750493b2ea1141154e5ba63d143e46c710c21222565c527058bcd14c7d8b6" }, { - "name": "org.jetbrains.kotlin-kotlin-test-common-1.3.41-jar", - "filename": "kotlin-test-common-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-test-common/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-common", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-test-common-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-test-common/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.3.41/kotlin-test-common-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.3.41/kotlin-test-common-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.3.61/kotlin-test-common-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.3.61/kotlin-test-common-1.3.61.jar" ], - "sha256": "e717b83cb55e9effc3424df17e8e5d988d0fc6006d8e48af227099e782c9dddb" + "sha256": "6e8f7a553f7b3abc81e177c23a3fcb3aafaaa3eb480998b042d222ddd0d2f2b6" }, { - "name": "org.jetbrains.kotlin-kotlin-test-common-1.3.41-pom", - "filename": "kotlin-test-common-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-test-common/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-common", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-test-common-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-test-common/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.3.41/kotlin-test-common-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.3.41/kotlin-test-common-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-common/1.3.61/kotlin-test-common-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-common/1.3.61/kotlin-test-common-1.3.61.pom" ], - "sha256": "d531342717dd725d8cb9272d7257532d11af0ccf970d4b4f3a53fd76ec665df2" + "sha256": "dc173d1fcc83f499407825c45afab60dc8a8578cf1fdf30f2be480d154756643" }, { - "name": "org.jetbrains.kotlin-kotlin-test-junit5-1.3.41-jar", - "filename": "kotlin-test-junit5-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-junit5", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-test-junit5-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.3.41/kotlin-test-junit5-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.3.41/kotlin-test-junit5-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.3.61/kotlin-test-junit5-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.3.61/kotlin-test-junit5-1.3.61.jar" ], - "sha256": "ae2cccb724ca695367673683afdb3bca00578b253b3136147ab2b6f45d25e445" + "sha256": "d87e9c6d61ed21a9647df9ab0105b1890508c56001fcf4fe48cfaa21cf94fe15" }, { - "name": "org.jetbrains.kotlin-kotlin-test-junit5-1.3.41-pom", - "filename": "kotlin-test-junit5-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-test-junit5", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-test-junit5-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-test-junit5/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.3.41/kotlin-test-junit5-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.3.41/kotlin-test-junit5-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test-junit5/1.3.61/kotlin-test-junit5-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test-junit5/1.3.61/kotlin-test-junit5-1.3.61.pom" ], - "sha256": "004fc669064a1f57e627789edc3865b6948eb421c0903a0439ffe48b9aa915fc" + "sha256": "719c6081b17a41aae10b6b4b6d6331462bb1ea0f55a182fa54ced8f8099bd575" }, { - "name": "org.jetbrains.kotlin-kotlin-test-1.3.41-jar", - "filename": "kotlin-test-1.3.41.jar", - "path": "org/jetbrains/kotlin/kotlin-test/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-util-io", + "version": "1.3.61", + "type": "jar", + "extension": "jar" + }, + "name": "kotlin-util-io-1.3.61.jar", + "path": "org/jetbrains/kotlin/kotlin-util-io/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.3.41/kotlin-test-1.3.41.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.3.41/kotlin-test-1.3.41.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.jar" ], - "sha256": "17ae0afba078e366bdf391cc68419fd52081c46d02879f13f3f7a55b12c5e9fa" + "sha256": "4f13b88cdd9f8c992ab1065f176d4eb33b7d1803dd30309f4769b2e64c9af008" }, { - "name": "org.jetbrains.kotlin-kotlin-test-1.3.41-pom", - "filename": "kotlin-test-1.3.41.pom", - "path": "org/jetbrains/kotlin/kotlin-test/1.3.41", + "id": { + "group": "org.jetbrains.kotlin", + "name": "kotlin-util-io", + "version": "1.3.61", + "type": "pom", + "extension": "pom" + }, + "name": "kotlin-util-io-1.3.61.pom", + "path": "org/jetbrains/kotlin/kotlin-util-io/1.3.61", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-test/1.3.41/kotlin-test-1.3.41.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-test/1.3.41/kotlin-test-1.3.41.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-util-io/1.3.61/kotlin-util-io-1.3.61.pom" ], - "sha256": "489d7452a48c797a2ff84335e5c52c7b6cfd2060330c195633fff1d634bdf325" + "sha256": "4d0ee73ef6d24d19fc908bf616daf3daa3a070db9aeb00006a36d08dc0989df1" }, { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-bom-1.3.1-pom", - "filename": "kotlinx-coroutines-bom-1.3.1.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.3.1", + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.3.3", + "type": "jar", + "extension": "jar" + }, + "name": "kotlinx-coroutines-core-1.3.3.jar", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.3.1/kotlinx-coroutines-bom-1.3.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.3.1/kotlinx-coroutines-bom-1.3.1.pom" + "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.jar" ], - "sha256": "c99b7aef068c64b035c9833bd28198256a3d5871f5d4ef37fa2792a7851533e7" + "sha256": "f75f8b0f3260717d45359f9e96ff66613fa063e4065120b067cc907257a0866a" }, { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.3.1-jar", - "filename": "kotlinx-coroutines-core-1.3.1.jar", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1", + "id": { + "group": "org.jetbrains.kotlinx", + "name": "kotlinx-coroutines-core", + "version": "1.3.3", + "type": "pom", + "extension": "pom" + }, + "name": "kotlinx-coroutines-core-1.3.3.pom", + "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1/kotlinx-coroutines-core-1.3.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1/kotlinx-coroutines-core-1.3.1.jar" + "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom", + "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.3/kotlinx-coroutines-core-1.3.3.pom" ], - "sha256": "481a993951d77df28451056405eb5e0846c3830a1619f57fc62dbcea38a90d4f" + "sha256": "29999e5286c988a9b72b7c6dfeb984d9fa21c51718f5b6f93f5621e700a537fe" }, { - "name": "org.jetbrains.kotlinx-kotlinx-coroutines-core-1.3.1-pom", - "filename": "kotlinx-coroutines-core-1.3.1.pom", - "path": "org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-api", + "version": "5.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-jupiter-api-5.6.0.jar", + "path": "org/junit/jupiter/junit-jupiter-api/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1/kotlinx-coroutines-core-1.3.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.1/kotlinx-coroutines-core-1.3.1.pom" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.jar" ], - "sha256": "4fcab9cfc09941bdbf1268246eb870e923ba8be8be620a6dba6588b079a4cb0b" + "sha256": "128a9828798f978fadfcda255ba365f908e58f6c37275c9e5f671cbd660a9a33" }, { - "name": "org.junit.jupiter-junit-jupiter-api-5.4.2-jar", - "filename": "junit-jupiter-api-5.4.2.jar", - "path": "org/junit/jupiter/junit-jupiter-api/5.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-api", + "version": "5.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-jupiter-api-5.6.0.module", + "path": "org/junit/jupiter/junit-jupiter-api/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.module" ], - "sha256": "cdfb355fee661633f15f2763b8c2029c2e1958585b97b9162d38a36b1754dc3e" + "sha256": "97cd25d82b490d80b4582a338546156a8f45ecaa8766484145a72b9015a2fde6" }, { - "name": "org.junit.jupiter-junit-jupiter-api-5.4.2-pom", - "filename": "junit-jupiter-api-5.4.2.pom", - "path": "org/junit/jupiter/junit-jupiter-api/5.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-api", + "version": "5.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-jupiter-api-5.6.0.pom", + "path": "org/junit/jupiter/junit-jupiter-api/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.pom" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.pom" ], - "sha256": "1d8de34f706edc691a2bd1dbb25162ed2bb5ef35b2604140776030a0cb3357ed" + "sha256": "ae3f336008d36ca6a7a416ed704c8e57dab9b598705132e4ce465b4dbcbe725a" }, { - "name": "org.junit.jupiter-junit-jupiter-engine-5.4.2-jar", - "filename": "junit-jupiter-engine-5.4.2.jar", - "path": "org/junit/jupiter/junit-jupiter-engine/5.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-engine", + "version": "5.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-jupiter-engine-5.6.0.jar", + "path": "org/junit/jupiter/junit-jupiter-engine/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.jar" ], - "sha256": "42aead7c5c1b74e0ef775c374a9fc07c771fd61a3621e66df1793dba14e534fd" + "sha256": "670c95d2e60099ce747e2ffefd716dbed5afedd0b995949a3592d7c88e796d2d" }, { - "name": "org.junit.jupiter-junit-jupiter-engine-5.4.2-pom", - "filename": "junit-jupiter-engine-5.4.2.pom", - "path": "org/junit/jupiter/junit-jupiter-engine/5.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-engine", + "version": "5.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-jupiter-engine-5.6.0.module", + "path": "org/junit/jupiter/junit-jupiter-engine/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.pom" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.module" ], - "sha256": "720e947732504db4f3722f768ff28924e807860f291b98b41af2381ca3702231" + "sha256": "10c2179b057a9d7b768ce3f4531415a2bb9472789a0d2ba2d7728eda70f92652" }, { - "name": "org.junit.platform-junit-platform-commons-1.4.2-jar", - "filename": "junit-platform-commons-1.4.2.jar", - "path": "org/junit/platform/junit-platform-commons/1.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-engine", + "version": "5.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-jupiter-engine-5.6.0.pom", + "path": "org/junit/jupiter/junit-jupiter-engine/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.pom" ], - "sha256": "104bfa65b30ceb425a6de19d66b976caf38443ff5978ae931c103fa0f99d04ce" + "sha256": "2edff9ec02336f8ccb64b79a21d54f9f327b3e20078299fe7060d8bed9838bf0" }, { - "name": "org.junit.platform-junit-platform-commons-1.4.2-pom", - "filename": "junit-platform-commons-1.4.2.pom", - "path": "org/junit/platform/junit-platform-commons/1.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-params", + "version": "5.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-jupiter-params-5.6.0.jar", + "path": "org/junit/jupiter/junit-jupiter-params/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.pom" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.jar" ], - "sha256": "c0b2a83d9a1925d14c42c3b34a82276a60db638a14cba26e5fd12a7c80a6ca7c" + "sha256": "dadea8429e8c44774a85f67a511d3d13dab58e694b576f7fca73262484ae02c0" }, { - "name": "org.junit.platform-junit-platform-engine-1.4.2-jar", - "filename": "junit-platform-engine-1.4.2.jar", - "path": "org/junit/platform/junit-platform-engine/1.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-params", + "version": "5.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-jupiter-params-5.6.0.module", + "path": "org/junit/jupiter/junit-jupiter-params/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.module" ], - "sha256": "7edb2ad879a338a84dbb09202b1399640ec0cacc5a95168539a9a74b5a2302e1" + "sha256": "d9248db327a72c4668e116a36d996491ddf936281bc10a99738c337676fd6c9d" }, { - "name": "org.junit.platform-junit-platform-engine-1.4.2-pom", - "filename": "junit-platform-engine-1.4.2.pom", - "path": "org/junit/platform/junit-platform-engine/1.4.2", + "id": { + "group": "org.junit.jupiter", + "name": "junit-jupiter-params", + "version": "5.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-jupiter-params-5.6.0.pom", + "path": "org/junit/jupiter/junit-jupiter-params/5.6.0", "urls": [ - "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.pom", - "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.pom" + "https://jcenter.bintray.com/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/jupiter/junit-jupiter-params/5.6.0/junit-jupiter-params-5.6.0.pom" ], - "sha256": "fa128efe174cd68f403d06915c9c57a399d660dab2742bc2366fd07c45a7c1e1" + "sha256": "148e123188333a04e7b9bd5108ce059fb3c62a9c17b903737f2d9be34ced9c94" }, { - "name": "org.opentest4j-opentest4j-1.1.1-jar", - "filename": "opentest4j-1.1.1.jar", - "path": "org/opentest4j/opentest4j/1.1.1", + "id": { + "group": "org.junit.platform", + "name": "junit-platform-commons", + "version": "1.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-platform-commons-1.6.0.jar", + "path": "org/junit/platform/junit-platform-commons/1.6.0", "urls": [ - "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar", - "https://repo.gradle.org/gradle/libs-releases/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar" + "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar" ], - "sha256": "f106351abd941110226745ed103c85863b3f04e9fa82ddea1084639ae0c5336c" + "sha256": "18accffaf3f1fe66daf9f13daa7d59b2ac6d06396f816a73b4d733d82d28ace6" }, { - "name": "org.opentest4j-opentest4j-1.1.1-pom", - "filename": "opentest4j-1.1.1.pom", - "path": "org/opentest4j/opentest4j/1.1.1", + "id": { + "group": "org.junit.platform", + "name": "junit-platform-commons", + "version": "1.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-platform-commons-1.6.0.module", + "path": "org/junit/platform/junit-platform-commons/1.6.0", "urls": [ - "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.pom", - "https://repo.gradle.org/gradle/libs-releases/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.pom" + "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.module" ], - "sha256": "d9ddb3babfbfc0a7b5b3a76e7ebd0e8f35854af9f6db0e949919b6f85b7dfd68" + "sha256": "16e0f6f7893159b21a156b818f32f0a4fdb909d2bdc850ed0c57582500578b4c" }, { - "name": "org.opentest4j-opentest4j-1.2.0-jar", - "filename": "opentest4j-1.2.0.jar", + "id": { + "group": "org.junit.platform", + "name": "junit-platform-commons", + "version": "1.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-platform-commons-1.6.0.pom", + "path": "org/junit/platform/junit-platform-commons/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.pom" + ], + "sha256": "5751484ae2a6f661bba84fa8c2aae7d4912c693fe25eb3e0adff4d93824c0a9c" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-engine", + "version": "1.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-platform-engine-1.6.0.jar", + "path": "org/junit/platform/junit-platform-engine/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar" + ], + "sha256": "7aed5424cb31a8255daecb1fcb0c173b0b64b1262e1eb2eaf87bbc7aec5e6d76" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-engine", + "version": "1.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-platform-engine-1.6.0.module", + "path": "org/junit/platform/junit-platform-engine/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.module" + ], + "sha256": "9fab5f84f549fa7925289ddfe5b7dd88f30e6086a5df1de07ebf508a2df25741" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-engine", + "version": "1.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-platform-engine-1.6.0.pom", + "path": "org/junit/platform/junit-platform-engine/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.pom" + ], + "sha256": "55ed9236c3415cbe1d7b06e76f45508647ecb94bafedb99c3bf395f0913bf3d6" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-launcher", + "version": "1.6.0", + "type": "jar", + "extension": "jar" + }, + "name": "junit-platform-launcher-1.6.0.jar", + "path": "org/junit/platform/junit-platform-launcher/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.jar", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.jar" + ], + "sha256": "11490be3f7488098fc460f0f754e95bbf6667473ab7f17d7d200557f9398c248" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-launcher", + "version": "1.6.0", + "type": "module", + "extension": "module" + }, + "name": "junit-platform-launcher-1.6.0.module", + "path": "org/junit/platform/junit-platform-launcher/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.module", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.module" + ], + "sha256": "c48b36d4b89444e53360786c64c3d556cffe3f0bd65c3eda47fbb197e8b16ab2" + }, + { + "id": { + "group": "org.junit.platform", + "name": "junit-platform-launcher", + "version": "1.6.0", + "type": "pom", + "extension": "pom" + }, + "name": "junit-platform-launcher-1.6.0.pom", + "path": "org/junit/platform/junit-platform-launcher/1.6.0", + "urls": [ + "https://jcenter.bintray.com/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.pom", + "https://repo.gradle.org/gradle/libs-releases/org/junit/platform/junit-platform-launcher/1.6.0/junit-platform-launcher-1.6.0.pom" + ], + "sha256": "61c2f71a2c19ee8c6368c19ef0abc43008ffc347b1c43b7753a7c594d916a5d9" + }, + { + "id": { + "group": "org.opentest4j", + "name": "opentest4j", + "version": "1.2.0", + "type": "jar", + "extension": "jar" + }, + "name": "opentest4j-1.2.0.jar", "path": "org/opentest4j/opentest4j/1.2.0", "urls": [ "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar", @@ -2394,8 +4016,14 @@ "sha256": "58812de60898d976fb81ef3b62da05c6604c18fd4a249f5044282479fc286af2" }, { - "name": "org.opentest4j-opentest4j-1.2.0-pom", - "filename": "opentest4j-1.2.0.pom", + "id": { + "group": "org.opentest4j", + "name": "opentest4j", + "version": "1.2.0", + "type": "pom", + "extension": "pom" + }, + "name": "opentest4j-1.2.0.pom", "path": "org/opentest4j/opentest4j/1.2.0", "urls": [ "https://jcenter.bintray.com/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.pom", @@ -2404,44 +4032,52 @@ "sha256": "a96e671816c1ff8803bdec74c9241f025bdfb277da5d2b4ee02266405936f994" }, { - "name": "org.slf4j-slf4j-api-1.7.25-jar", - "filename": "slf4j-api-1.7.25.jar", - "path": "org/slf4j/slf4j-api/1.7.25", + "id": { + "group": "org.slf4j", + "name": "slf4j-api", + "version": "1.7.28", + "type": "jar", + "extension": "jar" + }, + "name": "slf4j-api-1.7.28.jar", + "path": "org/slf4j/slf4j-api/1.7.28", "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar" + "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar", + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar" ], - "sha256": "18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79" + "sha256": "fb6e4f67a2a4689e3e713584db17a5d1090c1ebe6eec30e9e0349a6ee118141e" }, { - "name": "org.slf4j-slf4j-api-1.7.25-pom", - "filename": "slf4j-api-1.7.25.pom", - "path": "org/slf4j/slf4j-api/1.7.25", + "id": { + "group": "org.slf4j", + "name": "slf4j-api", + "version": "1.7.28", + "type": "pom", + "extension": "pom" + }, + "name": "slf4j-api-1.7.28.pom", + "path": "org/slf4j/slf4j-api/1.7.28", "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.pom" + "https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.pom", + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.pom" ], - "sha256": "7cd9d7a0b5d93dfd461a148891b43509cf403a9c7f9fb49060d3554df1c81e1e" + "sha256": "61f10feac576665b68caa6170cd423e8fb00055f1fad7ad9d7de2150e5f15caa" }, { - "name": "org.slf4j-slf4j-parent-1.7.25-pom", - "filename": "slf4j-parent-1.7.25.pom", - "path": "org/slf4j/slf4j-parent/1.7.25", + "id": { + "group": "org.slf4j", + "name": "slf4j-parent", + "version": "1.7.28", + "type": "pom", + "extension": "pom" + }, + "name": "slf4j-parent-1.7.28.pom", + "path": "org/slf4j/slf4j-parent/1.7.28", "urls": [ - "https://jcenter.bintray.com/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25.pom", - "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25.pom" + "https://jcenter.bintray.com/org/slf4j/slf4j-parent/1.7.28/slf4j-parent-1.7.28.pom", + "https://repo.gradle.org/gradle/libs-releases/org/slf4j/slf4j-parent/1.7.28/slf4j-parent-1.7.28.pom" ], - "sha256": "18f5c52120db036e88d6136f8839c832d074bdda95c756c6f429249d2db54ac6" - }, - { - "name": "org.sonatype.oss-oss-parent-9-pom", - "filename": "oss-parent-9.pom", - "path": "org/sonatype/oss/oss-parent/9", - "urls": [ - "https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom", - "https://repo.gradle.org/gradle/libs-releases/org/sonatype/oss/oss-parent/9/oss-parent-9.pom" - ], - "sha256": "fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a" + "sha256": "919b5f42dde33ace036865d1e2b292d98a0627417ff756e0287f4a56ad3e544e" } ] } diff --git a/gradle-env.nix b/gradle-env.nix index 91b01cd..9c8c076 100644 --- a/gradle-env.nix +++ b/gradle-env.nix @@ -19,7 +19,7 @@ # ''; # } -{ stdenv, lib, buildEnv, fetchurl, gradleGen, writeText }: +{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }: { envSpec , pname ? null @@ -27,9 +27,18 @@ , enableParallelBuilding ? true , gradleFlags ? [ "build" ] , gradlePackage ? null +, enableDebug ? false , ... } @ args: let + inherit (builtins) + filter sort replaceStrings attrValues match fromJSON + concatStringsSep; + + inherit (stdenv.lib) + versionOlder unique mapAttrs last concatMapStringsSep removeSuffix + optionalString groupBy' readFile hasSuffix; + mkDep = depSpec: stdenv.mkDerivation { inherit (depSpec) name; @@ -41,40 +50,171 @@ let installPhase = '' mkdir -p $out/${depSpec.path} - ln -s $src $out/${depSpec.path}/${depSpec.filename} + ln -s $src $out/${depSpec.path}/${depSpec.name} ''; }; + mkModuleMetadata = deps: + let + ids = filter + (id: id.type == "pom") + (map (dep: dep.id) deps); + + modules = groupBy' + (meta: id: + let + isNewer = versionOlder meta.latest id.version; + isNewerRelease = + !(hasSuffix "-SNAPSHOT" id.version) && + versionOlder meta.release id.version; + in { + groupId = id.group; + artifactId = id.name; + latest = if isNewer then id.version else meta.latest; + release = if isNewerRelease then id.version else meta.release; + versions = meta.versions ++ [id.version]; + } + ) + { + latest = ""; + release = ""; + versions = []; + } + (id: "${replaceStrings ["."] ["/"] id.group}/${id.name}/maven-metadata.xml") + ids; + + in + attrValues (mapAttrs (path: meta: + let + versions' = sort versionOlder (unique meta.versions); + in + with meta; writeTextDir path '' + + + ${groupId} + ${artifactId} + + ${optionalString (latest != "") "${latest}"} + ${optionalString (release != "") "${release}"} + + ${concatMapStringsSep "\n " (v: "${v}") versions'} + + + + '' + ) modules); + + mkSnapshotMetadata = deps: + let + snapshotDeps = filter (dep: dep ? build && dep ? timestamp) deps; + + modules = groupBy' + (meta: dep: + let + id = dep.id; + isNewer = dep.build > meta.buildNumber; + # Timestamp values can be bogus, e.g. jitpack.io + updated = if (match "[0-9]{8}\.[0-9]{6}" dep.timestamp) != null + then replaceStrings ["."] [""] dep.timestamp + else ""; + in { + groupId = id.group; + artifactId = id.name; + version = id.version; + timestamp = if isNewer then dep.timestamp else meta.timestamp; + buildNumber = if isNewer then dep.build else meta.buildNumber; + lastUpdated = if isNewer then updated else meta.lastUpdated; + versions = meta.versions or [] ++ [{ + classifier = id.classifier or ""; + extension = id.extension; + value = "${removeSuffix "-SNAPSHOT" id.version}-${dep.timestamp}-${toString dep.build}"; + updated = updated; + }]; + } + ) + { + timestamp = ""; + buildNumber = -1; + lastUpdated = ""; + } + (dep: "${replaceStrings ["."] ["/"] dep.id.group}/${dep.id.name}/${dep.id.version}/maven-metadata.xml") + snapshotDeps; + + mkSnapshotVersion = version: '' + + ${optionalString (version.classifier != "") "${version.classifier}"} + ${version.extension} + ${version.value} + ${optionalString (version.updated != "") "${version.updated}"} + + ''; + + in + attrValues (mapAttrs (path: meta: + with meta; writeTextDir path '' + + + ${groupId} + ${artifactId} + ${version} + + + ${optionalString (timestamp != "") "${timestamp}"} + ${optionalString (buildNumber != -1) "${toString buildNumber}"} + + ${optionalString (lastUpdated != "") "${lastUpdated}"} + + ${concatMapStringsSep "\n " mkSnapshotVersion versions} + + + + '' + ) modules); + mkRepo = project: type: deps: buildEnv { name = "${project}-gradle-${type}-env"; - paths = map mkDep deps; + paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps; }; mkInitScript = projectSpec: let - repos = builtins.mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; + repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies; in writeText "init.gradle" '' + static def offlineRepo(RepositoryHandler repositories, String env, String path) { + repositories.clear() + repositories.maven { + name "Nix''${env.capitalize()}MavenOffline" + url path + metadataSources { + it.gradleMetadata() + it.mavenPom() + it.artifact() + } + } + repositories.ivy { + name "Nix''${env.capitalize()}IvyOffline" + url path + layout "maven" + metadataSources { + it.gradleMetadata() + it.ivyDescriptor() + it.artifact() + } + } + } + gradle.settingsEvaluated { - it.pluginManagement.repositories { - clear() - maven { url = uri("${repos.plugin}") } - } + offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}") } gradle.projectsLoaded { - allprojects { - buildscript { - repositories { - clear() - maven { url = uri("${repos.buildscript}") } - } + allprojects { + buildscript { + offlineRepo(repositories, "buildscript", "${repos.buildscript}") + } + offlineRepo(repositories, "project", "${repos.project}") } - repositories { - clear() - maven { url = uri("${repos.project}") } - } - } } ''; @@ -95,9 +235,9 @@ let gradle = args.gradlePackage or mkGradle projectSpec.gradle; }; - gradleEnv = builtins.mapAttrs + gradleEnv = mapAttrs (_: p: mkProjectEnv p) - (builtins.fromJSON (builtins.readFile envSpec)); + (fromJSON (readFile envSpec)); projectEnv = gradleEnv.""; pname = args.pname or projectEnv.name; @@ -118,9 +258,10 @@ in stdenv.mkDerivation (args // { "GRADLE_USER_HOME=$(mktemp -d)" \ gradle --offline --no-daemon --no-build-cache \ --info --full-stacktrace --warning-mode=all \ - ${lib.optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableParallelBuilding "--parallel"} \ + ${optionalString enableDebug "-Dorg.gradle.debug=true"} \ --init-script ${projectEnv.initScript} \ - ${builtins.concatStringsSep " " gradleFlags} + ${concatStringsSep " " gradleFlags} ) runHook postBuild diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..b0cc9f8 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs='-Dfile.encoding=UTF-8' + +VERSION=1.0.0-rc1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..f3d88b1c2faf2fc91d853cd5d4242b5547257070 100644 GIT binary patch delta 22808 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 b$#%!p#R9xp*+AlE3}y_kgcumyFM)Uf(nCre delta 20005 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3a54a33..31a0802 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 83f2acf..2fe81a7 100755 --- a/gradlew +++ b/gradlew @@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,14 +175,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/model/build.gradle.kts b/model/build.gradle.kts index ec5b68b..f8a0080 100644 --- a/model/build.gradle.kts +++ b/model/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - api("com.squareup.moshi:moshi:+") - api("com.squareup.okio:okio:+") - kapt("com.squareup.moshi:moshi-kotlin-codegen:+") + api("com.squareup.moshi:moshi:latest.release") + kapt("com.squareup.moshi:moshi-kotlin-codegen:latest.release") + implementation("net.swiftzer.semver:semver:latest.release") } diff --git a/model/gradle/dependency-locks/compileClasspath.lockfile b/model/gradle/dependency-locks/compileClasspath.lockfile index 2f20ef8..c8f22a8 100644 --- a/model/gradle/dependency-locks/compileClasspath.lockfile +++ b/model/gradle/dependency-locks/compileClasspath.lockfile @@ -1,11 +1,12 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/model/gradle/dependency-locks/runtimeClasspath.lockfile b/model/gradle/dependency-locks/runtimeClasspath.lockfile index 5add37c..bcf4ce0 100644 --- a/model/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/model/gradle/dependency-locks/runtimeClasspath.lockfile @@ -1,8 +1,6 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -org.jetbrains:annotations:13.0 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 diff --git a/model/gradle/dependency-locks/testCompileClasspath.lockfile b/model/gradle/dependency-locks/testCompileClasspath.lockfile index 2f20ef8..c8f22a8 100644 --- a/model/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/model/gradle/dependency-locks/testCompileClasspath.lockfile @@ -1,11 +1,12 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/model/gradle/dependency-locks/testRuntimeClasspath.lockfile b/model/gradle/dependency-locks/testRuntimeClasspath.lockfile index 2f20ef8..c8f22a8 100644 --- a/model/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/model/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -1,11 +1,12 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt b/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt index 607f45a..8c76fef 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt @@ -1,20 +1,22 @@ package org.nixos.gradle2nix import com.squareup.moshi.JsonClass +import net.swiftzer.semver.SemVer import java.io.Serializable +import java.lang.IllegalArgumentException @JsonClass(generateAdapter = true) data class DefaultBuild( override val gradle: DefaultGradle, - override val pluginDependencies: DefaultDependencies, + override val pluginDependencies: List, override val rootProject: DefaultProject, override val includedBuilds: List ) : Build, Serializable { constructor(model: Build) : this( DefaultGradle(model.gradle), - DefaultDependencies(model.pluginDependencies), + model.pluginDependencies.map(::DefaultArtifact), DefaultProject(model.rootProject), - model.includedBuilds.map { DefaultIncludedBuild(it) } + model.includedBuilds.map(::DefaultIncludedBuild) ) } @@ -52,8 +54,8 @@ data class DefaultProject( override val version: String, override val path: String, override val projectDir: String, - override val buildscriptDependencies: DefaultDependencies, - override val projectDependencies: DefaultDependencies, + override val buildscriptDependencies: List, + override val projectDependencies: List, override val children: List ) : Project, Serializable { constructor(model: Project) : this( @@ -61,59 +63,75 @@ data class DefaultProject( model.version, model.path, model.projectDir, - DefaultDependencies(model.buildscriptDependencies), - DefaultDependencies(model.projectDependencies), + model.buildscriptDependencies.map(::DefaultArtifact), + model.projectDependencies.map(::DefaultArtifact), model.children.map { DefaultProject(it) } ) } -@JsonClass(generateAdapter = true) -data class DefaultDependencies( - override val repositories: DefaultRepositories, - override val artifacts: List -) : Dependencies, Serializable { - constructor(model: Dependencies) : this( - DefaultRepositories(model.repositories), - model.artifacts.map { DefaultArtifact(it) } - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultRepositories( - override val maven: List -) : Repositories, Serializable { - constructor(model: Repositories) : this( - model.maven.map { DefaultMaven(it) } - ) -} - -@JsonClass(generateAdapter = true) -data class DefaultMaven( - override val urls: List -) : Maven, Serializable { - constructor(model: Maven) : this( - model.urls.toList() - ) -} - @JsonClass(generateAdapter = true) data class DefaultArtifact( - override val groupId: String, - override val artifactId: String, - override val version: String, - override val classifier: String, - override val extension: String, + override val id: DefaultArtifactIdentifier, + override val name: String, + override val path: String, + override val timestamp: String? = null, + override val build: Int? = null, + override val urls: List, override val sha256: String ) : Artifact, Comparable, Serializable { constructor(model: Artifact) : this( - model.groupId, - model.artifactId, - model.version, - model.classifier, - model.extension, + DefaultArtifactIdentifier(model.id), + model.name, + model.path, + model.timestamp, + model.build, + model.urls, model.sha256 ) - override fun toString() = "$groupId:$artifactId:$version:$classifier:$extension" - override fun compareTo(other: DefaultArtifact): Int = toString().compareTo(other.toString()) + override fun toString() = id.toString() + override fun compareTo(other: DefaultArtifact): Int = id.compareTo(other.id) } + +@JsonClass(generateAdapter = true) +data class DefaultArtifactIdentifier( + override val group: String, + override val name: String, + override val version: String, + override val type: String, + override val extension: String = type, + override val classifier: String? = null +) : ArtifactIdentifier, Comparable, Serializable { + constructor(model: ArtifactIdentifier) : this( + model.group, + model.name, + model.version, + model.type, + model.extension, + model.classifier + ) + + @delegate:Transient + private val semver: SemVer? by lazy { + try { + SemVer.parse(version) + } catch (_: IllegalArgumentException) { + null + } + } + + override fun compareTo(other: DefaultArtifactIdentifier): Int { + return group.compareTo(other.group).takeUnless { it == 0 } + ?: name.compareTo(other.name).takeUnless { it == 0 } + ?: other.semver?.let { semver?.compareTo(it) }?.takeUnless { it == 0 } + ?: type.compareTo(other.type).takeUnless { it == 0 } + ?: other.classifier?.let { classifier?.compareTo(it) }?.takeUnless { it == 0 } + ?: 0 + } + + override fun toString(): String = buildString { + append("$group:$name:$version") + if (classifier != null) append(":$classifier") + append("@$type") + } +} \ No newline at end of file diff --git a/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt b/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt index 90eb49e..cf7b57f 100644 --- a/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt +++ b/model/src/main/kotlin/org/nixos/gradle2nix/Model.kt @@ -2,7 +2,7 @@ package org.nixos.gradle2nix interface Build { val gradle: Gradle - val pluginDependencies: Dependencies + val pluginDependencies: List val rootProject: Project val includedBuilds: List } @@ -25,29 +25,26 @@ interface Project { val version: String val path: String val projectDir: String - val buildscriptDependencies: Dependencies - val projectDependencies: Dependencies + val buildscriptDependencies: List + val projectDependencies: List val children: List } -interface Dependencies { - val repositories: Repositories - val artifacts: List -} - -interface Repositories { - val maven: List -} - -interface Maven { - val urls: List -} - interface Artifact { - val groupId: String - val artifactId: String - val version: String - val classifier: String - val extension: String + val id: ArtifactIdentifier + val name: String + val path: String + val timestamp: String? + val build: Int? + val urls: List val sha256: String } + +interface ArtifactIdentifier { + val group: String + val name: String + val version: String + val type: String + val extension: String + val classifier: String? +} \ No newline at end of file diff --git a/plugin/.stutter/java11.lock b/plugin/.stutter/java11.lock index e4b6130..9f3de2e 100644 --- a/plugin/.stutter/java11.lock +++ b/plugin/.stutter/java11.lock @@ -5,4 +5,6 @@ 5.3.1 5.4.1 5.5.1 -5.6.3 +5.6.4 +6.0.1 +6.1 diff --git a/plugin/.stutter/java8.lock b/plugin/.stutter/java8.lock index 2176f74..bc04116 100644 --- a/plugin/.stutter/java8.lock +++ b/plugin/.stutter/java8.lock @@ -12,4 +12,6 @@ 5.3.1 5.4.1 5.5.1 -5.6.3 +5.6.4 +6.0.1 +6.1 diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 18861db..affd82f 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -9,12 +9,14 @@ plugins { id("com.github.johnrengelman.shadow") id("org.ajoberstar.stutter") } -apply { - plugin("kotlin") -} -group = "org.nixos" -version = "1.0.0-SNAPSHOT" +sourceSets { + compatTest { + resources { + srcDir("$rootDir/fixtures") + } + } +} dependencyLocking { lockAllConfigurations() @@ -30,17 +32,21 @@ dependencies { implementation(project(":model")) shadow(gradleApi()) compileOnly("org.gradle:gradle-tooling-api:${gradle.gradleVersion}") - implementation("org.apache.maven:maven-model:latest.release") - implementation("org.apache.maven:maven-model-builder:latest.release") + implementation("org.apache.ivy:ivy:latest.release") + implementation("org.apache.maven:maven-repository-metadata:latest.release") compatTestImplementation(embeddedKotlin("stdlib-jdk8")) compatTestImplementation(embeddedKotlin("test-junit5")) compatTestImplementation(embeddedKotlin("reflect")) - compatTestImplementation("org.junit.jupiter:junit-jupiter-api:5.4+") - compatTestRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.4+") + compatTestImplementation("org.junit.jupiter:junit-jupiter-api:latest.release") + compatTestRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:latest.release") + compatTestImplementation("org.junit.jupiter:junit-jupiter-params:latest.release") + compatTestRuntimeOnly("org.junit.platform:junit-platform-launcher:latest.release") + compatTestImplementation("dev.minutest:minutest:latest.release") compatTestImplementation(gradleTestKit()) compatTestImplementation(project(":model")) compatTestImplementation("io.strikt:strikt-core:latest.release") + compatTestImplementation("com.squareup.okio:okio:latest.release") } gradlePlugin { diff --git a/plugin/gradle/dependency-locks/buildscript-classpath.lockfile b/plugin/gradle/dependency-locks/buildscript-classpath.lockfile index be46018..775c121 100644 --- a/plugin/gradle/dependency-locks/buildscript-classpath.lockfile +++ b/plugin/gradle/dependency-locks/buildscript-classpath.lockfile @@ -7,28 +7,31 @@ commons-logging:commons-logging:1.2 de.undercouch:gradle-download-task:3.4.3 org.apache.httpcomponents:httpclient:4.5.3 org.apache.httpcomponents:httpcore:4.4.6 -org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:1.2.9 -org.gradle.kotlin:plugins:1.2.9 +org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:1.3.3 +org.gradle.kotlin:plugins:1.3.3 org.jetbrains.intellij.deps:trove4j:1.0.20181211 -org.jetbrains.kotlin:kotlin-android-extensions:1.3.41 -org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.3.41 -org.jetbrains.kotlin:kotlin-build-common:1.3.41 -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.41 -org.jetbrains.kotlin:kotlin-compiler-runner:1.3.41 -org.jetbrains.kotlin:kotlin-daemon-client:1.3.41 -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.3.41 -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.3.41 -org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.41 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-sam-with-receiver:1.3.41 -org.jetbrains.kotlin:kotlin-script-runtime:1.3.41 -org.jetbrains.kotlin:kotlin-scripting-common:1.3.41 -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.41 -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.3.41 -org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.41 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1 +org.jetbrains.kotlin:kotlin-android-extensions:1.3.61 +org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.3.61 +org.jetbrains.kotlin:kotlin-build-common:1.3.61 +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.61 +org.jetbrains.kotlin:kotlin-compiler-runner:1.3.61 +org.jetbrains.kotlin:kotlin-daemon-client:1.3.61 +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.3.61 +org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.3.61 +org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.3.61 +org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61 +org.jetbrains.kotlin:kotlin-native-utils:1.3.61 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-sam-with-receiver:1.3.61 +org.jetbrains.kotlin:kotlin-script-runtime:1.3.61 +org.jetbrains.kotlin:kotlin-scripting-common:1.3.61 +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.3.61 +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.3.61 +org.jetbrains.kotlin:kotlin-scripting-jvm:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 +org.jetbrains.kotlin:kotlin-util-io:1.3.61 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1 org.jetbrains:annotations:13.0 diff --git a/plugin/gradle/dependency-locks/compatTestCompileClasspath.lockfile b/plugin/gradle/dependency-locks/compatTestCompileClasspath.lockfile index 1dbaa79..1394e97 100644 --- a/plugin/gradle/dependency-locks/compatTestCompileClasspath.lockfile +++ b/plugin/gradle/dependency-locks/compatTestCompileClasspath.lockfile @@ -1,20 +1,23 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -io.strikt:strikt-core:0.22.2 -org.apiguardian:apiguardian-api:1.0.0 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.41 -org.jetbrains.kotlin:kotlin-test-common:1.3.41 -org.jetbrains.kotlin:kotlin-test-junit5:1.3.41 -org.jetbrains.kotlin:kotlin-test:1.3.41 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +dev.minutest:minutest:1.10.0 +io.strikt:strikt-core:0.23.4 +org.apiguardian:apiguardian-api:1.1.0 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 +org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.61 +org.jetbrains.kotlin:kotlin-test-common:1.3.61 +org.jetbrains.kotlin:kotlin-test-junit5:1.3.61 +org.jetbrains.kotlin:kotlin-test:1.3.61 org.jetbrains:annotations:13.0 -org.junit.jupiter:junit-jupiter-api:5.4.2 -org.junit.platform:junit-platform-commons:1.4.2 +org.junit.jupiter:junit-jupiter-api:5.6.0 +org.junit.jupiter:junit-jupiter-params:5.6.0 +org.junit.platform:junit-platform-commons:1.6.0 +org.junit:junit-bom:5.6.0 org.opentest4j:opentest4j:1.2.0 diff --git a/plugin/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile b/plugin/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile index 22e3c4b..2eedc2f 100644 --- a/plugin/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile +++ b/plugin/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile @@ -2,23 +2,29 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.christophsturm:filepeek:0.1.1 -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -io.strikt:strikt-core:0.22.2 -org.apiguardian:apiguardian-api:1.0.0 -org.jetbrains.kotlin:kotlin-reflect:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.41 -org.jetbrains.kotlin:kotlin-test-common:1.3.41 -org.jetbrains.kotlin:kotlin-test-junit5:1.3.41 -org.jetbrains.kotlin:kotlin-test:1.3.41 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.1 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:2.4.3 +dev.minutest:minutest:1.10.0 +io.github.classgraph:classgraph:4.8.28 +io.strikt:strikt-core:0.23.4 +net.swiftzer.semver:semver:1.1.1 +org.apiguardian:apiguardian-api:1.1.0 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 +org.jetbrains.kotlin:kotlin-test-annotations-common:1.3.61 +org.jetbrains.kotlin:kotlin-test-common:1.3.61 +org.jetbrains.kotlin:kotlin-test-junit5:1.3.61 +org.jetbrains.kotlin:kotlin-test:1.3.61 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3 org.jetbrains:annotations:13.0 -org.junit.jupiter:junit-jupiter-api:5.4.2 -org.junit.jupiter:junit-jupiter-engine:5.4.2 -org.junit.platform:junit-platform-commons:1.4.2 -org.junit.platform:junit-platform-engine:1.4.2 +org.junit.jupiter:junit-jupiter-api:5.6.0 +org.junit.jupiter:junit-jupiter-engine:5.6.0 +org.junit.jupiter:junit-jupiter-params:5.6.0 +org.junit.platform:junit-platform-commons:1.6.0 +org.junit.platform:junit-platform-engine:1.6.0 +org.junit.platform:junit-platform-launcher:1.6.0 +org.junit:junit-bom:5.6.0 org.opentest4j:opentest4j:1.2.0 diff --git a/plugin/gradle/dependency-locks/compileClasspath.lockfile b/plugin/gradle/dependency-locks/compileClasspath.lockfile index 6bafef2..1dc0e07 100644 --- a/plugin/gradle/dependency-locks/compileClasspath.lockfile +++ b/plugin/gradle/dependency-locks/compileClasspath.lockfile @@ -1,21 +1,15 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -javax.inject:javax.inject:1 -org.apache.commons:commons-lang3:3.8.1 -org.apache.maven:maven-artifact:3.6.2 -org.apache.maven:maven-builder-support:3.6.2 -org.apache.maven:maven-model-builder:3.6.2 -org.apache.maven:maven-model:3.6.2 -org.codehaus.plexus:plexus-interpolation:1.25 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +org.apache.ivy:ivy:2.5.0 +org.apache.maven:maven-repository-metadata:3.6.3 org.codehaus.plexus:plexus-utils:3.2.1 -org.eclipse.sisu:org.eclipse.sisu.inject:0.3.3 -org.gradle:gradle-tooling-api:5.6.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +org.gradle:gradle-tooling-api:6.1 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/plugin/gradle/dependency-locks/runtimeClasspath.lockfile b/plugin/gradle/dependency-locks/runtimeClasspath.lockfile index ff6d3ba..42dc9b1 100644 --- a/plugin/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/plugin/gradle/dependency-locks/runtimeClasspath.lockfile @@ -1,17 +1,9 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -javax.inject:javax.inject:1 -org.apache.commons:commons-lang3:3.8.1 -org.apache.maven:maven-artifact:3.6.2 -org.apache.maven:maven-builder-support:3.6.2 -org.apache.maven:maven-model-builder:3.6.2 -org.apache.maven:maven-model:3.6.2 -org.codehaus.plexus:plexus-interpolation:1.25 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 +org.apache.ivy:ivy:2.5.0 +org.apache.maven:maven-repository-metadata:3.6.3 org.codehaus.plexus:plexus-utils:3.2.1 -org.eclipse.sisu:org.eclipse.sisu.inject:0.3.3 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -org.jetbrains:annotations:13.0 diff --git a/plugin/gradle/dependency-locks/testCompileClasspath.lockfile b/plugin/gradle/dependency-locks/testCompileClasspath.lockfile index 438744c..6d78c29 100644 --- a/plugin/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/plugin/gradle/dependency-locks/testCompileClasspath.lockfile @@ -1,20 +1,14 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -javax.inject:javax.inject:1 -org.apache.commons:commons-lang3:3.8.1 -org.apache.maven:maven-artifact:3.6.2 -org.apache.maven:maven-builder-support:3.6.2 -org.apache.maven:maven-model-builder:3.6.2 -org.apache.maven:maven-model:3.6.2 -org.codehaus.plexus:plexus-interpolation:1.25 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +org.apache.ivy:ivy:2.5.0 +org.apache.maven:maven-repository-metadata:3.6.3 org.codehaus.plexus:plexus-utils:3.2.1 -org.eclipse.sisu:org.eclipse.sisu.inject:0.3.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/plugin/gradle/dependency-locks/testRuntimeClasspath.lockfile b/plugin/gradle/dependency-locks/testRuntimeClasspath.lockfile index 438744c..8b9f163 100644 --- a/plugin/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/plugin/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -1,20 +1,15 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -com.squareup.moshi:moshi:1.9.1 -com.squareup.okio:okio:2.4.1 -javax.inject:javax.inject:1 -org.apache.commons:commons-lang3:3.8.1 -org.apache.maven:maven-artifact:3.6.2 -org.apache.maven:maven-builder-support:3.6.2 -org.apache.maven:maven-model-builder:3.6.2 -org.apache.maven:maven-model:3.6.2 -org.codehaus.plexus:plexus-interpolation:1.25 +com.squareup.moshi:moshi:1.9.2 +com.squareup.okio:okio:1.16.0 +net.swiftzer.semver:semver:1.1.1 +org.apache.ivy:ivy:2.5.0 +org.apache.maven:maven-repository-metadata:3.6.3 org.codehaus.plexus:plexus-utils:3.2.1 -org.eclipse.sisu:org.eclipse.sisu.inject:0.3.3 -org.jetbrains.kotlin:kotlin-reflect:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41 -org.jetbrains.kotlin:kotlin-stdlib:1.3.50 +org.jetbrains.kotlin:kotlin-reflect:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61 +org.jetbrains.kotlin:kotlin-stdlib:1.3.61 org.jetbrains:annotations:13.0 diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt index f337ea5..28ee39f 100644 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/BasicTest.kt @@ -1,97 +1,51 @@ package org.nixos.gradle2nix -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.io.TempDir -import java.io.File -import kotlin.test.assertEquals +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL +import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.MAVEN_CENTRAL_URL +import strikt.api.expectThat +import strikt.assertions.all +import strikt.assertions.containsExactly +import strikt.assertions.get +import strikt.assertions.hasSize +import strikt.assertions.isEqualTo +import strikt.assertions.map +import strikt.assertions.startsWith +class BasicTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("basic tests") { + withFixture("basic/basic-java-project") { + test("builds basic java project") { + expectThat(build()) { + get("gradle version") { gradle.version }.isEqualTo(System.getProperty("compat.gradle.version")) -class BasicTest { - @TempDir lateinit var projectDir: File + get("root project dependencies") { rootProject.projectDependencies }.and { + ids.containsExactly( + "com.squareup.moshi:moshi:1.8.0@jar", + "com.squareup.moshi:moshi:1.8.0@pom", + "com.squareup.moshi:moshi-parent:1.8.0@pom", + "com.squareup.okio:okio:2.2.2@jar", + "com.squareup.okio:okio:2.2.2@pom", + "org.jetbrains:annotations:13.0@jar", + "org.jetbrains:annotations:13.0@pom", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom", + "org.sonatype.oss:oss-parent:7@pom" + ) - @Test - fun `builds basic project with kotlin dsl`() { - val model = projectDir.buildKotlin(""" - plugins { - java + map { it.urls }.all { + hasSize(2) + get(0).startsWith(BINTRAY_JCENTER_URL) + get(1).startsWith(MAVEN_CENTRAL_URL) + } + } + } } - - repositories { - jcenter() - } - - dependencies { - implementation("com.squareup.okio:okio:2.2.2") - implementation("com.squareup.moshi:moshi:1.8.0") - } - """.trimIndent()) - - assertEquals(model.gradle.version, System.getProperty("compat.gradle.version")) - - with(model.rootProject.projectDependencies) { - with(repositories) { - assertEquals(1, maven.size) - assertEquals(maven[0].urls[0], "https://jcenter.bintray.com/") - } - - assertArtifacts( - pom("com.squareup.moshi:moshi-parent:1.8.0"), - jar("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.moshi:moshi:1.8.0"), - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - pom("org.sonatype.oss:oss-parent:7"), - actual = artifacts - ) - } - } - - @Test - fun `builds basic project with groovy dsl`() { - val model = projectDir.buildGroovy(""" - plugins { - id("java") - } - - repositories { - jcenter() - } - - dependencies { - implementation 'com.squareup.okio:okio:2.2.2' - implementation 'com.squareup.moshi:moshi:1.8.0' - } - """.trimIndent()) - - assertEquals(model.gradle.version, System.getProperty("compat.gradle.version")) - - with(model.rootProject.projectDependencies) { - with(repositories) { - assertEquals(1, maven.size) - assertEquals(maven[0].urls[0], "https://jcenter.bintray.com/") - } - - assertArtifacts( - pom("com.squareup.moshi:moshi-parent:1.8.0"), - jar("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.moshi:moshi:1.8.0"), - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - pom("org.sonatype.oss:oss-parent:7"), - actual = artifacts - ) } } } diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt new file mode 100644 index 0000000..1d572f0 --- /dev/null +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/DependencyTest.kt @@ -0,0 +1,69 @@ +package org.nixos.gradle2nix + +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import strikt.api.expectThat +import strikt.assertions.all +import strikt.assertions.contains +import strikt.assertions.containsExactly +import strikt.assertions.filter +import strikt.assertions.isEqualTo +import strikt.assertions.isNotEqualTo +import strikt.assertions.isNotNull +import strikt.assertions.single +import strikt.assertions.startsWith + +class DependencyTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("dependency tests") { + + withFixture("dependency/classifier") { + test("resolves dependency with classifier") { + expectThat(build()) { + get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly( + "com.badlogicgames.gdx:gdx-parent:1.9.9@pom", + "com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop@jar", + "com.badlogicgames.gdx:gdx-platform:1.9.9@pom", + "org.sonatype.oss:oss-parent:5@pom" + ) + } + } + } + + withFixture("dependency/dynamic-snapshot") { + test("resolves snapshot dependency with dynamic version") { + expectThat(build()) { + get("root project dependencies") { rootProject.projectDependencies } + .filter { it.id.name == "packr" } + .all { + get("id.version") { id.version }.isEqualTo("-SNAPSHOT") + get("timestamp") { timestamp }.isNotNull() + get("build") { build }.isNotNull() + } + } + } + } + + withFixture("dependency/snapshot") { + test("resolves snapshot dependency") { + expectThat(build()) { + get("root project dependencies") { rootProject.projectDependencies } + .filter { it.id.name == "okio" } + .and { + ids.containsExactly( + "com.squareup.okio:okio:2.5.0-SNAPSHOT@jar", + "com.squareup.okio:okio:2.5.0-SNAPSHOT@module", + "com.squareup.okio:okio:2.5.0-SNAPSHOT@pom" + ) + all { + get("timestamp") { timestamp }.isNotNull() + get("build") { build }.isNotNull() + get("urls") { urls }.single().startsWith(SONATYPE_OSS_URL) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt new file mode 100644 index 0000000..345dc05 --- /dev/null +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/IvyTest.kt @@ -0,0 +1,33 @@ +package org.nixos.gradle2nix + +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import strikt.api.expectThat +import strikt.assertions.all +import strikt.assertions.containsExactly +import strikt.assertions.map +import strikt.assertions.single +import strikt.assertions.startsWith + +class IvyTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("ivy tests") { + withFixture("ivy/basic") { + test("resolves ivy dependencies") { + expectThat(build()) { + get("root project dependencies") { rootProject.projectDependencies }.and { + ids.containsExactly( + "org.opendof.core-java:dof-cipher-sms4:1.0@jar", + "org.opendof.core-java:dof-oal:7.0.2@jar" + ) + + map { it.urls }.all { + single().startsWith("https://asset.opendof.org/artifact") + } + } + } + } + } + } +} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt new file mode 100644 index 0000000..73339a0 --- /dev/null +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/PluginTest.kt @@ -0,0 +1,21 @@ +package org.nixos.gradle2nix + +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import strikt.api.expectThat +import strikt.assertions.contains + +class PluginTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("plugin tests") { + withFixture("plugin/resolves-from-default-repo") { + test("resolves plugin from default repo") { + expectThat(build()) { + get("plugin dependencies") { pluginDependencies }.ids + .contains("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.3.50@pom") + } + } + } + } +} \ No newline at end of file diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt index 03eeb91..39b55d3 100644 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/SubprojectsTest.kt @@ -1,461 +1,151 @@ package org.nixos.gradle2nix -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.io.TempDir +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL import strikt.api.expectThat +import strikt.assertions.all +import strikt.assertions.containsExactly import strikt.assertions.containsExactlyInAnyOrder +import strikt.assertions.get +import strikt.assertions.hasSize +import strikt.assertions.isEqualTo import strikt.assertions.map -import java.io.File -import kotlin.test.assertEquals +import strikt.assertions.single +import strikt.assertions.startsWith -class SubprojectsTest { - @TempDir - lateinit var root: File +class SubprojectsTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("subproject tests") { + withFixture("subprojects/multi-module") { + test("builds multi-module project") { + expectThat(build().rootProject) { + get("root project dependencies") { projectDependencies }.and { + ids.containsExactly( + "junit:junit:4.12@jar", + "junit:junit:4.12@pom", + "org.hamcrest:hamcrest-core:1.3@jar", + "org.hamcrest:hamcrest-core:1.3@pom", + "org.hamcrest:hamcrest-parent:1.3@pom" + ) + all { + get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) + } + } - @Test - fun `builds multi-module project with kotlin dsl`() { - root.resolve("child-a").also { it.mkdirs() } - .resolve("build.gradle.kts").writeText(""" - plugins { - java - } + get("children") { children }.and { + hasSize(2) - dependencies { - implementation("com.squareup.okio:okio:2.2.2") - } - """.trimIndent()) + get(0).and { + get("name") { name }.isEqualTo("child-a") + get("projectDir") { projectDir }.isEqualTo("child-a") - root.resolve("child-b").also { it.mkdirs() } - .resolve("build.gradle.kts").writeText(""" - plugins { - java - } + get("child-a project dependencies") { projectDependencies }.and { + ids.containsExactly( + "com.squareup.okio:okio:2.2.2@jar", + "com.squareup.okio:okio:2.2.2@pom", + "org.jetbrains:annotations:13.0@jar", + "org.jetbrains:annotations:13.0@pom", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom" + ) - dependencies { - implementation(project(":child-a")) - implementation("com.squareup.moshi:moshi:1.8.0") - } - """.trimIndent()) + all { + get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) + } + } + } - root.resolve("settings.gradle.kts").writeText(""" - include(":child-a", ":child-b") - """.trimIndent()) + get(1).and { + get("name") { name }.isEqualTo("child-b") + get("projectDir") { projectDir }.isEqualTo("child-b") - val model = root.buildKotlin(""" - plugins { - java - } + get("child-b project dependencies") { projectDependencies }.and { + ids.containsExactly( + "com.squareup.moshi:moshi:1.8.0@jar", + "com.squareup.moshi:moshi:1.8.0@pom", + "com.squareup.moshi:moshi-parent:1.8.0@pom", + "com.squareup.okio:okio:1.16.0@jar", // compileClasspath + "com.squareup.okio:okio:1.16.0@pom", // compileClasspath + "com.squareup.okio:okio:2.2.2@jar", // runtimeClasspath + "com.squareup.okio:okio:2.2.2@pom", // runtimeClasspath + "com.squareup.okio:okio-parent:1.16.0@pom", // compileClasspath + "org.jetbrains:annotations:13.0@jar", + "org.jetbrains:annotations:13.0@pom", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom", + "org.sonatype.oss:oss-parent:7@pom" + ) - allprojects { - repositories { - jcenter() + all { + get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) + } + } + } + } } } - dependencies { - testImplementation("junit:junit:4.12") - } - """.trimIndent()) + test("builds single subproject") { + expectThat(build(subprojects = listOf(":child-a")).rootProject) { + get("root project dependencies") { projectDependencies }.and { + ids.containsExactly( + "junit:junit:4.12@jar", + "junit:junit:4.12@pom", + "org.hamcrest:hamcrest-core:1.3@jar", + "org.hamcrest:hamcrest-core:1.3@pom", + "org.hamcrest:hamcrest-parent:1.3@pom" + ) - with(model.rootProject) { - with(projectDependencies) { - assertEquals(listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven) + all { + get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) + } + } - assertArtifacts( - jar("junit:junit:4.12"), - pom("junit:junit:4.12"), - jar("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-parent:1.3"), - actual = artifacts) - } + get("children") { children }.single().and { + get("name") { name }.isEqualTo("child-a") + get("projectDir") { projectDir }.isEqualTo("child-a") - assertEquals(2, children.size) + get("child-a project dependencies") { projectDependencies }.and { + ids.containsExactly( + "com.squareup.okio:okio:2.2.2@jar", + "com.squareup.okio:okio:2.2.2@pom", + "org.jetbrains:annotations:13.0@jar", + "org.jetbrains:annotations:13.0@pom", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib:1.2.60@pom", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@jar", + "org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60@pom" + ) - with(children[0]) { - assertEquals("child-a", name) - assertEquals(root.resolve("child-a").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals( - listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven - ) - - assertArtifacts( - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - actual = artifacts - ) - } - } - - with(children[1]) { - assertEquals("child-b", name) - assertEquals(root.resolve("child-b").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals( - listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven - ) - - assertArtifacts( - pom("com.squareup.moshi:moshi-parent:1.8.0"), - jar("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.okio:okio-parent:1.16.0"), - jar("com.squareup.okio:okio:1.16.0"), - pom("com.squareup.okio:okio:1.16.0"), - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - pom("org.sonatype.oss:oss-parent:7"), - actual = artifacts - ) + all { + get("urls") { urls }.single().startsWith(BINTRAY_JCENTER_URL) + } + } + } } } } - } - @Test - fun `builds multi-module project with groovy dsl`() { - root.resolve("child-a").also { it.mkdirs() } - .resolve("build.gradle").writeText(""" - plugins { - id 'java' + withFixture("subprojects/dependent-subprojects") { + test("includes dependent subprojects") { + expectThat(build(subprojects = listOf(":child-a"))) { + get("children") { rootProject.children } + .map { it.path } + .containsExactlyInAnyOrder(":child-a", ":child-b", ":child-c") } - dependencies { - implementation 'com.squareup.okio:okio:2.2.2' - } - """.trimIndent()) - - root.resolve("child-b").also { it.mkdirs() } - .resolve("build.gradle").writeText(""" - plugins { - id 'java' - } - - dependencies { - implementation project(':child-a') - implementation 'com.squareup.moshi:moshi:1.8.0' - } - """.trimIndent()) - - root.resolve("settings.gradle").writeText(""" - include ':child-a', ':child-b' - """.trimIndent()) - - val model = root.buildGroovy(""" - plugins { - id 'java' - } - - allprojects { - repositories { - jcenter() + expectThat(build(subprojects = listOf(":child-b"))) { + get("children") { rootProject.children } + .map { it.path } + .containsExactlyInAnyOrder(":child-b", ":child-c") } } - - dependencies { - testImplementation 'junit:junit:4.12' - } - """.trimIndent()) - - with(model.rootProject) { - with(projectDependencies) { - assertEquals(listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven) - - assertArtifacts( - jar("junit:junit:4.12"), - pom("junit:junit:4.12"), - jar("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-parent:1.3"), - actual = artifacts) - } - - assertEquals(2, children.size) - - with(children[0]) { - assertEquals("child-a", name) - assertEquals(root.resolve("child-a").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals( - listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven - ) - - assertArtifacts( - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - actual = artifacts - ) - } - } - - with(children[1]) { - assertEquals("child-b", name) - assertEquals(root.resolve("child-b").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals(listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven) - - assertArtifacts( - pom("com.squareup.moshi:moshi-parent:1.8.0"), - jar("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.moshi:moshi:1.8.0"), - pom("com.squareup.okio:okio-parent:1.16.0"), - jar("com.squareup.okio:okio:1.16.0"), - pom("com.squareup.okio:okio:1.16.0"), - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - pom("org.sonatype.oss:oss-parent:7"), - actual = artifacts) - } - } - } - } - - @Test - fun `builds single subproject in multi-module project with kotlin dsl`() { - root.resolve("child-a").also { it.mkdirs() } - .resolve("build.gradle.kts").writeText(""" - plugins { - java - } - - dependencies { - implementation("com.squareup.okio:okio:2.2.2") - } - """.trimIndent()) - - root.resolve("child-b").also { it.mkdirs() } - .resolve("build.gradle.kts").writeText(""" - plugins { - java - } - - dependencies { - implementation("com.squareup.moshi:moshi:1.8.0") - } - """.trimIndent()) - - root.resolve("settings.gradle.kts").writeText(""" - include(":child-a", ":child-b") - """.trimIndent()) - - val model = root.buildKotlin(""" - plugins { - java - } - - allprojects { - repositories { - jcenter() - } - } - - dependencies { - testImplementation("junit:junit:4.12") - } - """.trimIndent(), - subprojects = listOf(":child-a")) - - with(model.rootProject) { - with(projectDependencies) { - assertEquals(listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven) - - assertArtifacts( - jar("junit:junit:4.12"), - pom("junit:junit:4.12"), - jar("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-parent:1.3"), - actual = artifacts) - } - - assertEquals(1, children.size) - - with(children[0]) { - assertEquals("child-a", name) - assertEquals(root.resolve("child-a").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals( - listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven - ) - - assertArtifacts( - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - actual = artifacts - ) - } - } - } - } - - @Test - fun `builds single subproject in multi-module project with groovy dsl`() { - root.resolve("child-a").also { it.mkdirs() } - .resolve("build.gradle").writeText(""" - plugins { - id 'java' - } - - dependencies { - implementation 'com.squareup.okio:okio:2.2.2' - } - """.trimIndent()) - - root.resolve("child-b").also { it.mkdirs() } - .resolve("build.gradle").writeText(""" - plugins { - id 'java' - } - - dependencies { - implementation 'com.squareup.moshi:moshi:1.8.0' - } - """.trimIndent()) - - root.resolve("settings.gradle").writeText(""" - include ':child-a', ':child-b' - """.trimIndent()) - - val model = root.buildGroovy(""" - plugins { - id 'java' - } - - allprojects { - repositories { - jcenter() - } - } - - dependencies { - testImplementation 'junit:junit:4.12' - } - """.trimIndent(), - subprojects = listOf(":child-a")) - - with(model.rootProject) { - with(projectDependencies) { - assertEquals(listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven) - - assertArtifacts( - jar("junit:junit:4.12"), - pom("junit:junit:4.12"), - jar("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-core:1.3"), - pom("org.hamcrest:hamcrest-parent:1.3"), - actual = artifacts) - } - - assertEquals(1, children.size) - - with(children[0]) { - assertEquals("child-a", name) - assertEquals(root.resolve("child-a").toRelativeString(root), projectDir) - - with(projectDependencies) { - assertEquals( - listOf(DefaultMaven(urls = listOf("https://jcenter.bintray.com/"))), - repositories.maven - ) - - assertArtifacts( - jar("com.squareup.okio:okio:2.2.2"), - pom("com.squareup.okio:okio:2.2.2"), - jar("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib-common:1.2.60"), - jar("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - pom("org.jetbrains.kotlin:kotlin-stdlib:1.2.60"), - jar("org.jetbrains:annotations:13.0"), - pom("org.jetbrains:annotations:13.0"), - actual = artifacts - ) - } - } - } - } - - @Test - fun `includes subproject dependencies`() { - root.resolve("child-a").also { it.mkdirs() }.resolve("build.gradle.kts").writeText("") - root.resolve("child-b").also { it.mkdirs() }.resolve("build.gradle.kts").writeText("") - root.resolve("child-c").also { it.mkdirs() }.resolve("build.gradle.kts").writeText("") - root.resolve("child-d").also { it.mkdirs() }.resolve("build.gradle.kts").writeText("") - - root.resolve("settings.gradle.kts").writeText(""" - include(":child-a", ":child-b", ":child-c", ":child-d") - """.trimIndent()) - - val buildscript = """ - subprojects { - apply(plugin = "java") - } - - project(":child-a") { - dependencies { - "implementation"(project(":child-b")) - } - } - - project(":child-b") { - dependencies { - "implementation"(project(":child-c")) - } - } - """.trimIndent() - - with(root.buildKotlin(buildscript, subprojects = listOf(":child-a"))) { - expectThat(rootProject.children).map { it.path } - .containsExactlyInAnyOrder(":child-a", ":child-b", ":child-c") - } - - with(root.buildKotlin(buildscript, subprojects = listOf(":child-b"))) { - expectThat(rootProject.children).map { it.path }.containsExactlyInAnyOrder(":child-b", ":child-c") } } } - diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt index d3642b4..2063092 100644 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/TestUtil.kt @@ -1,20 +1,33 @@ package org.nixos.gradle2nix import com.squareup.moshi.Moshi +import dev.minutest.ContextBuilder +import dev.minutest.MinutestFixture +import dev.minutest.TestContextBuilder import okio.buffer import okio.source -import org.gradle.api.internal.artifacts.dsl.ParsedModuleStringNotation import org.gradle.internal.classpath.DefaultClassPath import org.gradle.testkit.runner.GradleRunner -import org.gradle.testkit.runner.internal.DefaultGradleRunner import org.gradle.testkit.runner.internal.PluginUnderTestMetadataReading -import org.gradle.tooling.GradleConnector -import org.gradle.tooling.events.ProgressListener +import org.gradle.util.GradleVersion +import org.junit.jupiter.api.Assumptions.assumeTrue +import strikt.api.Assertion +import strikt.assertions.map import java.io.File -import kotlin.test.assertTrue +import java.io.StringWriter +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths +import kotlin.streams.toList + +const val SONATYPE_OSS_URL = "https://oss.sonatype.org/content/repositories/snapshots/" private val moshi = Moshi.Builder().build() +private val gradleVersion = GradleVersion.version(System.getProperty("compat.gradle.version")) + +val GRADLE_4_5 = GradleVersion.version("4.5") + private fun File.initscript() = resolve("init.gradle").also { it.writer().use { out -> val classpath = DefaultClassPath.of(PluginUnderTestMetadataReading.readImplementationClasspath()) @@ -31,20 +44,12 @@ private fun File.initscript() = resolve("init.gradle").also { } } -fun File.buildGroovy( - script: String, - configurations: List = emptyList(), - subprojects: List = emptyList() -): DefaultBuild { - resolve("build.gradle").writeText(script) - return build(configurations, subprojects) -} - fun File.buildKotlin( script: String, configurations: List = emptyList(), subprojects: List = emptyList() ): DefaultBuild { + assumeTrue(gradleVersion >= GRADLE_4_5) resolve("build.gradle.kts").writeText(script) return build(configurations, subprojects) } @@ -53,10 +58,13 @@ private fun File.build( configurations: List, subprojects: List ): DefaultBuild { - GradleRunner.create() - .withGradleVersion(System.getProperty("compat.gradle.version")) + val log = StringWriter() + + val result = GradleRunner.create() + .withGradleVersion(gradleVersion.version) .withProjectDir(this) - .forwardOutput() + .forwardStdOutput(log) + .forwardStdError(log) .withArguments( "nixModel", "--init-script=${initscript()}", @@ -64,8 +72,12 @@ private fun File.build( "-Porg.nixos.gradle2nix.configurations=${configurations.joinToString(",")}", "-Porg.nixos.gradle2nix.subprojects=${subprojects.joinToString(",")}" ) - .build() + .runCatching { build() } + result.onFailure { error -> + System.err.print(log) + throw error + } return resolve("build/nix/model.json").run { println(readText()) source().buffer().use { src -> @@ -73,75 +85,48 @@ private fun File.build( } } } -// -// return GradleConnector.newConnector() -// .useGradleVersion(System.getProperty("compat.gradle.version")) -// .forProjectDirectory(this) -// .connect() -// .model(Build::class.java).apply { -// addArguments("--init-script=${initscript()}", "--stacktrace") -// addJvmArguments( -// "-Dorg.gradle.debug=true", -// "-Dorg.nixos.gradle2nix.configurations=${configurations.joinToString(",")}", -// "-Dorg.nixos.gradle2nix.subprojects=${subprojects.joinToString(",")}" -// ) -// setStandardOutput(System.out) -// setStandardError(System.out) -// } -// .get() -// .let { DefaultBuild(it) } -fun jar(notation: String, sha256: String = ""): DefaultArtifact = - artifact(notation, sha256, "jar") +val > Assertion.Builder.ids: Assertion.Builder> + get() = map { it.id.toString() } -fun pom(notation: String, sha256: String = ""): DefaultArtifact = - artifact(notation, sha256, "pom") +@MinutestFixture +class Fixture(val testRoots: List) -private fun artifact(notation: String, sha256: String, type: String): DefaultArtifact { - val parsed = ParsedModuleStringNotation(notation, type) - return DefaultArtifact( - groupId = parsed.group ?: "", - artifactId = parsed.name ?: "", - version = parsed.version ?: "", - classifier = parsed.classifier ?: "", - extension = type, - sha256 = sha256 - ) +@MinutestFixture +class ProjectFixture(val testRoot: Path) { + fun build( + configurations: List = emptyList(), + subprojects: List = emptyList() + ) = testRoot.toFile().build(configurations, subprojects) } -private fun artifactEquals(expected: DefaultArtifact, actual: DefaultArtifact?): Boolean { - return actual != null && with (expected) { - groupId == actual.groupId && - artifactId == actual.artifactId && - version == actual.version && - classifier == actual.classifier && - extension == actual.extension && - (sha256.takeIf { it.isNotEmpty() }?.equals(actual.sha256) ?: true) +fun ContextBuilder.withFixture( + name: String, + block: TestContextBuilder.() -> Unit +) = context(name) { + val url = checkNotNull(Thread.currentThread().contextClassLoader.getResource(name)?.toURI()) { + "$name: No test fixture found" } -} + val fixtureRoot = Paths.get(url) + val dest = createTempDir("gradle2nix").toPath() + val src = checkNotNull(fixtureRoot.takeIf(Files::exists)) { + "$name: Test fixture not found: $fixtureRoot}" + } + src.toFile().copyRecursively(dest.toFile()) + val testRoots = Files.list(dest).filter { Files.isDirectory(it) }.toList() -fun assertArtifacts(vararg expected: DefaultArtifact, actual: List) { - val mismatches = mutableListOf() - val remaining = mutableListOf().also { it.addAll(actual) } - expected.forEachIndexed { i: Int, exp: DefaultArtifact -> - val act = actual.elementAtOrNull(i) - if (!artifactEquals(exp, act)) { - mismatches += Mismatch(i, exp, act) - } else if (act != null) { - remaining -= act + fixture { + Fixture(testRoots) + } + + afterAll { + dest.toFile().deleteRecursively() + } + + testRoots.forEach { testRoot -> + derivedContext(testRoot.fileName.toString()) { + deriveFixture { ProjectFixture(testRoot) } + block() } } - assertTrue(mismatches.isEmpty() && remaining.isEmpty(), """ - Artifact mismatches: - ${mismatches.joinToString("\n ", prefix = " ")} - - Missing artifacts: - ${remaining.joinToString("\n ", prefix = " ")} - """) } - -data class Mismatch( - val index: Int, - val expected: DefaultArtifact, - val actual: DefaultArtifact? -) diff --git a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt index ff025e6..2d8393f 100644 --- a/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt +++ b/plugin/src/compatTest/kotlin/org/nixos/gradle2nix/WrapperTest.kt @@ -1,22 +1,25 @@ package org.nixos.gradle2nix -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.io.TempDir +import dev.minutest.Tests +import dev.minutest.junit.JUnit5Minutests +import dev.minutest.rootContext +import strikt.api.expectThat +import strikt.assertions.isEqualTo import java.io.File -import kotlin.test.assertEquals -class WrapperTest { - @TempDir - lateinit var root: File +class WrapperTest : JUnit5Minutests { + @Tests + fun tests() = rootContext("wrapper tests") { + fixture { createTempDir("gradle2nix") } - @Test - fun `resolves gradle version from wrapper configuration`() { - val model = root.buildKotlin(""" - tasks.withType { - gradleVersion = "5.5.1" + test("resolves gradle wrapper version") { + expectThat(buildKotlin(""" + tasks.withType { + gradleVersion = "5.5.1" + } + """.trimIndent())) { + get("gradle version") { gradle.version }.isEqualTo("5.5.1") } - """.trimIndent()) - - assertEquals(model.gradle.version, "5.5.1") + } } } \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt new file mode 100644 index 0000000..fa08598 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/ConfigurationResolver.kt @@ -0,0 +1,255 @@ +package org.nixos.gradle2nix + +import org.apache.ivy.Ivy +import org.apache.ivy.core.settings.IvySettings +import org.apache.ivy.plugins.parser.m2.PomReader +import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser +import org.apache.ivy.plugins.repository.url.URLResource +import org.apache.ivy.plugins.resolver.ChainResolver +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.ModuleIdentifier +import org.gradle.api.artifacts.ResolvedArtifact +import org.gradle.api.artifacts.component.ComponentArtifactIdentifier +import org.gradle.api.artifacts.component.ModuleComponentIdentifier +import org.gradle.api.artifacts.dsl.DependencyHandler +import org.gradle.api.artifacts.dsl.RepositoryHandler +import org.gradle.api.artifacts.query.ArtifactResolutionQuery +import org.gradle.api.artifacts.result.ResolvedArtifactResult +import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository +import org.gradle.ivy.IvyDescriptorArtifact +import org.gradle.ivy.IvyModule +import org.gradle.kotlin.dsl.getArtifacts +import org.gradle.kotlin.dsl.withArtifacts +import org.gradle.maven.MavenModule +import org.gradle.maven.MavenPomArtifact +import org.gradle.util.GradleVersion +import java.io.File + +internal class ConfigurationResolverFactory(repositories: RepositoryHandler) { + private val ivySettings = IvySettings().apply { + defaultInit() + setDefaultRepositoryCacheBasedir(createTempDir("gradle2nix-cache").apply(File::deleteOnExit).absolutePath) + setDictatorResolver(ChainResolver().also { chain -> + chain.settings = this@apply + for (resolver in resolvers) chain.add(resolver) + }) + } + + private val resolvers = repositories.filterIsInstance() + .mapNotNull { it.repositoryResolver(ivySettings) } + + fun create(dependencies: DependencyHandler): ConfigurationResolver = + ConfigurationResolver(ivySettings, resolvers, dependencies) +} + +internal class ConfigurationResolver( + ivySettings: IvySettings, + private val resolvers: List, + private val dependencies: DependencyHandler +) { + private val ivy = Ivy.newInstance(ivySettings) + + fun resolve(configuration: Configuration): List { + val resolved = configuration.resolvedConfiguration + + val topLevelMetadata = resolved.firstLevelModuleDependencies + .flatMap { resolveMetadata(it.moduleGroup, it.moduleName, it.moduleVersion) } + + val allArtifacts = resolved.resolvedArtifacts + .filter { it.id.componentIdentifier is ModuleComponentIdentifier } + .flatMap(::resolve) + + return (topLevelMetadata + allArtifacts).filter { it.urls.isNotEmpty() } + } + + private fun resolve(resolvedArtifact: ResolvedArtifact): List { + val componentId = resolvedArtifact.id.componentIdentifier as ModuleComponentIdentifier + + val artifactId = DefaultArtifactIdentifier( + group = componentId.group, + name = componentId.module, + version = componentId.version, + type = resolvedArtifact.type, + extension = resolvedArtifact.extension, + classifier = resolvedArtifact.classifier + ) + + val sha256 = resolvedArtifact.file.sha256() + val artifacts = resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() + return artifacts + componentId.run { resolveMetadata(group, module, version) } + } + + private fun resolveMetadata( + group: String, + name: String, + version: String + ): List { + return resolvePoms(group, name, version) + + resolveDescriptors(group, name, version) + + resolveGradleMetadata(group, name, version) + } + + private fun resolvePoms( + group: String, + name: String, + version: String + ): List { + return dependencies.createArtifactResolutionQuery() + .forModuleCompat(group, name, version) + .withArtifacts(MavenModule::class, MavenPomArtifact::class) + .execute() + .resolvedComponents + .flatMap { it.getArtifacts(MavenPomArtifact::class) } + .filterIsInstance() + .flatMap { it.withParentPoms() } + .flatMap { resolvedPom -> + val componentId = resolvedPom.id.componentIdentifier as ModuleComponentIdentifier + val artifactId = DefaultArtifactIdentifier( + group = componentId.group, + name = componentId.module, + version = componentId.version, + type = "pom" + ) + val sha256 = resolvedPom.file.sha256() + resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() + } + } + + private fun resolveDescriptors( + group: String, + name: String, + version: String + ): List { + return dependencies.createArtifactResolutionQuery() + .forModuleCompat(group, name, version) + .withArtifacts(IvyModule::class, IvyDescriptorArtifact::class) + .execute() + .resolvedComponents + .flatMap { it.getArtifacts(IvyDescriptorArtifact::class) } + .filterIsInstance() + .flatMap { it.withParentDescriptors() } + .flatMap { resolvedDesc -> + val componentId = resolvedDesc.id.componentIdentifier as ModuleComponentIdentifier + val artifactId = DefaultArtifactIdentifier( + group = componentId.group, + name = componentId.module, + version = componentId.version, + type = "ivy", + extension = "xml" + ) + val sha256 = resolvedDesc.file.sha256() + resolvers.mapNotNull { it.resolve(artifactId, sha256) }.merge() + } + } + + private fun resolveGradleMetadata( + group: String, + name: String, + version: String + ): List { + val artifactId = DefaultArtifactIdentifier( + group = group, + name = name, + version = version, + type = "module" + ) + return resolvers.mapNotNull { it.resolve(artifactId) }.merge() + } + + private fun ResolvedArtifactResult.parentPom(): ResolvedArtifactResult? { + val resource = URLResource(file.toURI().toURL()) + val reader = PomReader(resource.url, resource) + + return if (reader.hasParent()) { + dependencies.createArtifactResolutionQuery() + .forModuleCompat(reader.parentGroupId, reader.parentArtifactId, reader.parentVersion) + .withArtifacts(MavenModule::class, MavenPomArtifact::class) + .execute() + .resolvedComponents + .flatMap { it.getArtifacts(MavenPomArtifact::class) } + .filterIsInstance() + .firstOrNull() + } else { + null + } + } + + private fun ResolvedArtifactResult.withParentPoms(): List = + generateSequence(this) { it.parentPom() }.toList() + + private fun ResolvedArtifactResult.parentDescriptors(seen: Set): List { + val url = file.toURI().toURL() + val parser = XmlModuleDescriptorParser.getInstance() + + val descriptor = parser.parseDescriptor(ivy.settings, url, false) + + return descriptor.inheritedDescriptors.mapNotNull { desc -> + dependencies.createArtifactResolutionQuery() + .forModuleCompat( + desc.parentRevisionId.organisation, + desc.parentRevisionId.name, + desc.parentRevisionId.revision + ) + .withArtifacts(IvyModule::class, IvyDescriptorArtifact::class) + .execute() + .resolvedComponents + .flatMap { it.getArtifacts(IvyDescriptorArtifact::class) } + .filterIsInstance() + .firstOrNull() + }.filter { it.id !in seen } + } + + private fun ResolvedArtifactResult.withParentDescriptors(): List { + val seen = mutableSetOf() + return generateSequence(listOf(this)) { descs -> + val parents = descs.flatMap { it.parentDescriptors(seen) } + seen.addAll(parents.map(ResolvedArtifactResult::id)) + parents.takeUnless { it.isEmpty() } + }.flatten().distinct().toList() + } +} + +private fun ArtifactResolutionQuery.forModuleCompat( + group: String, + name: String, + version: String +): ArtifactResolutionQuery { + return if (GradleVersion.current() >= GradleVersion.version("4.5")) { + forModule(group, name, version) + } else { + forComponents(ModuleComponentId(group, name, version)) + } +} + +private data class ModuleComponentId( + private val moduleId: ModuleId, + private val version: String +) : ModuleComponentIdentifier { + + constructor( + group: String, + name: String, + version: String + ) : this(ModuleId(group, name), version) + + override fun getGroup(): String = moduleId.group + override fun getModule(): String = moduleId.name + override fun getVersion(): String = version + override fun getModuleIdentifier(): ModuleIdentifier = moduleId + override fun getDisplayName(): String = + arrayOf(group, module, version).joinToString(":") +} + +private data class ModuleId( + private val group: String, + private val name: String +) : ModuleIdentifier { + override fun getGroup(): String = group + override fun getName(): String = name +} + +private fun List.merge(): List { + return groupingBy { it.id } + .reduce { _, dest, next -> dest.copy(urls = dest.urls + next.urls) } + .values.toList() +} \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyResolver.kt deleted file mode 100644 index eb0ba5b..0000000 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/DependencyResolver.kt +++ /dev/null @@ -1,169 +0,0 @@ -package org.nixos.gradle2nix - -import org.apache.maven.model.Parent -import org.apache.maven.model.Repository -import org.apache.maven.model.building.DefaultModelBuilderFactory -import org.apache.maven.model.building.DefaultModelBuildingRequest -import org.apache.maven.model.building.ModelBuildingRequest -import org.apache.maven.model.building.ModelSource2 -import org.apache.maven.model.resolution.ModelResolver -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.ConfigurationContainer -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.component.ModuleComponentIdentifier -import org.gradle.api.artifacts.component.ProjectComponentIdentifier -import org.gradle.api.artifacts.dsl.DependencyHandler -import org.gradle.api.artifacts.result.ResolvedArtifactResult -import org.gradle.api.logging.Logger -import org.gradle.api.logging.Logging -import org.gradle.maven.MavenModule -import org.gradle.maven.MavenPomArtifact -import java.io.File -import java.io.InputStream -import java.net.URI -import java.security.MessageDigest - -internal class DependencyResolver( - private val configurations: ConfigurationContainer, - private val dependencies: DependencyHandler, - private val logger: Logger = Logging.getLogger(DependencyResolver::class.simpleName) -) { - private val mavenPomResolver = MavenPomResolver(configurations, dependencies) - - fun resolveDependencies(configuration: Configuration): Set { - if (!configuration.isCanBeResolved) { - logger.warn("Cannot resolve configuration ${configuration.name}; ignoring.") - return emptySet() - } - return configuration.resolvedConfiguration.resolvedArtifacts - .filterNot { it.id.componentIdentifier is ProjectComponentIdentifier } - .mapTo(sortedSetOf()) { - with (it) { - DefaultArtifact( - groupId = moduleVersion.id.group, - artifactId = moduleVersion.id.name, - version = moduleVersion.id.version, - classifier = classifier ?: "", - extension = extension, - sha256 = sha256(file) - ) - } - } - } - - fun resolveDependencies( - dependencies: Collection, - includeTransitive: Boolean = false - ): Set { - val configuration = configurations.detachedConfiguration(*(dependencies.toTypedArray())) - configuration.isTransitive = includeTransitive - return resolveDependencies(configuration) - } - - fun resolvePoms(configuration: Configuration): Set { - return dependencies.createArtifactResolutionQuery() - .forComponents(configuration.incoming.resolutionResult.allComponents.map { it.id }) - .withArtifacts(MavenModule::class.java, MavenPomArtifact::class.java) - .execute() - .resolvedComponents.asSequence() - .flatMap { component -> - val id = component.id - if (id !is ModuleComponentIdentifier) { - emptySequence() - } else { - component.getArtifacts(MavenPomArtifact::class.java).asSequence() - .filterIsInstance() - .map { id to it } - } - } - .flatMapTo(sortedSetOf()) { (id, artifact) -> - sequenceOf(DefaultArtifact( - groupId = id.group, - artifactId = id.module, - version = id.version, - classifier = "", - extension = artifact.file.extension, - sha256 = sha256(artifact.file) - )) + mavenPomResolver.resolve(artifact.file).asSequence() - } - } - - fun resolvePoms( - dependencies: Collection, - includeTransitive: Boolean = false - ): Set { - val configuration = configurations.detachedConfiguration(*(dependencies.toTypedArray())) - configuration.isTransitive = includeTransitive - return resolvePoms(configuration) - } -} - -private class MavenPomResolver( - private val configurations: ConfigurationContainer, - private val dependencies: DependencyHandler -) : ModelResolver { - private val modelBuilder = DefaultModelBuilderFactory().newInstance() - private val resolvedDependencies = mutableSetOf() - - @Synchronized - fun resolve(pom: File): Set { - resolvedDependencies.clear() - modelBuilder.build( - DefaultModelBuildingRequest() - .setModelResolver(this) - .setPomFile(pom) - .setSystemProperties(System.getProperties()) - .setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL) - ).effectiveModel - return resolvedDependencies.toSet() - } - - override fun newCopy() = this - - override fun resolveModel( - groupId: String, - artifactId: String, - version: String - ): ModelSource2 { - val file = configurations - .detachedConfiguration(dependencies.create("$groupId:$artifactId:$version@pom")) - .singleFile - resolvedDependencies.add(DefaultArtifact( - groupId = groupId, - artifactId = artifactId, - version = version, - classifier = "", - extension = file.extension, - sha256 = sha256(file) - )) - - return object : ModelSource2 { - override fun getLocation(): String = file.absolutePath - override fun getLocationURI(): URI = file.absoluteFile.toURI() - override fun getRelatedSource(relPath: String?): ModelSource2? = null - override fun getInputStream(): InputStream = file.inputStream() - } - } - - override fun resolveModel(parent: Parent): ModelSource2 = - resolveModel(parent.groupId, parent.artifactId, parent.version) - - override fun resolveModel(dependency: org.apache.maven.model.Dependency): ModelSource2 = - resolveModel(dependency.groupId, dependency.artifactId, dependency.version) - - override fun addRepository(repository: Repository) {} - - override fun addRepository(repository: Repository, replace: Boolean) {} -} - -private const val HEX = "0123456789abcdef" - -private fun sha256(file: File): String = buildString { - MessageDigest.getInstance("SHA-256").digest(file.readBytes()) - .asSequence() - .map { it.toInt() } - .forEach { - append(HEX[it shr 4 and 0x0f]) - append(HEX[it and 0x0f]) - } -} diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt index 3ec2cd9..8d3cb4d 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Gradle2NixPlugin.kt @@ -1,19 +1,16 @@ package org.nixos.gradle2nix import com.squareup.moshi.Moshi -import okio.buffer -import okio.sink import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.ArtifactRepositoryContainer +import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.artifacts.dsl.RepositoryHandler -import org.gradle.api.artifacts.repositories.MavenArtifactRepository -import org.gradle.api.internal.GradleInternal import org.gradle.api.invocation.Gradle +import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.wrapper.Wrapper import org.gradle.kotlin.dsl.getByName +import org.gradle.kotlin.dsl.newInstance import org.gradle.kotlin.dsl.support.serviceOf import org.gradle.kotlin.dsl.withType import org.gradle.plugin.management.PluginRequest @@ -33,15 +30,17 @@ open class Gradle2NixPlugin : Plugin { rootProject.serviceOf() .register(NixToolingModelBuilder(modelProperties, pluginRequests)) - rootProject.tasks.register("nixModel") { + rootProject.tasks.registerCompat("nixModel") { doLast { val outFile = project.mkdir(project.buildDir.resolve("nix")).resolve("model.json") val model = project.buildModel(modelProperties, pluginRequests) - outFile.sink().buffer().use { out -> - Moshi.Builder().build() - .adapter(DefaultBuild::class.java) - .indent(" ") - .toJson(out, model) + outFile.bufferedWriter().use { out -> + out.write( + Moshi.Builder().build() + .adapter(DefaultBuild::class.java) + .indent(" ") + .toJson(model) + ) out.flush() } } @@ -50,7 +49,13 @@ open class Gradle2NixPlugin : Plugin { } } -private const val NIX_MODEL_NAME = "org.nixos.gradle2nix.Build" +private fun TaskContainer.registerCompat(name: String, configureAction: Task.() -> Unit) { + if (GradleVersion.current() >= GradleVersion.version("4.9")) { + register(name, configureAction) + } else { + create(name, configureAction) + } +} private class NixToolingModelBuilder( private val modelProperties: ModelProperties, @@ -100,6 +105,7 @@ private fun Project.buildModel( ) } +@Suppress("UnstableApiUsage") private fun Project.buildGradle(): DefaultGradle = with(tasks.getByName("wrapper")) { DefaultGradle( @@ -113,18 +119,16 @@ private fun Project.buildGradle(): DefaultGradle = } ?: throw IllegalStateException( """ - Failed to find native-platform jar in ${gradle.gradleHomeDir}. - - Ask Tad to fix this. - """.trimIndent() + Failed to find native-platform jar in ${gradle.gradleHomeDir}. + Ask Tad to fix this. + """.trimIndent() ) ) } -private fun Project.buildPlugins(pluginRequests: List): DefaultDependencies = - with(PluginResolver(gradle as GradleInternal, pluginRequests)) { - DefaultDependencies(repositories.repositories(), artifacts()) - } +private fun Project.buildPlugins(pluginRequests: List): List { + return objects.newInstance().resolve(pluginRequests).distinct().sorted() +} private fun Project.includedBuilds(): List = gradle.includedBuilds.map { @@ -134,7 +138,7 @@ private fun Project.includedBuilds(): List = private fun Project.buildProject( explicitConfigurations: List, explicitSubprojects: Collection, - plugins: DefaultDependencies + pluginArtifacts: List ): DefaultProject { logger.lifecycle(" Subproject: $path") return DefaultProject( @@ -142,34 +146,33 @@ private fun Project.buildProject( version = version.toString(), path = path, projectDir = projectDir.toRelativeString(rootProject.projectDir), - buildscriptDependencies = buildscriptDependencies(plugins), + buildscriptDependencies = buildscriptDependencies(pluginArtifacts), projectDependencies = projectDependencies(explicitConfigurations), - children = explicitSubprojects.map { it.buildProject(explicitConfigurations, emptyList(), plugins) } + children = explicitSubprojects.map { + it.buildProject(explicitConfigurations, emptyList(), pluginArtifacts) + } ) } -private fun Project.buildscriptDependencies(plugins: DefaultDependencies): DefaultDependencies = - with(DependencyResolver(buildscript.configurations, buildscript.dependencies)) { - DefaultDependencies( - repositories = buildscript.repositories.repositories(), - artifacts = buildscript.configurations - .filter { it.isCanBeResolved } - .flatMap { resolveDependencies(it) + resolvePoms(it) } - .minus(plugins.artifacts) - .distinct() - ) - } +private fun Project.buildscriptDependencies(pluginArtifacts: List): List { + val resolverFactory = ConfigurationResolverFactory(buildscript.repositories) + val resolver = resolverFactory.create(buildscript.dependencies) + val pluginIds = pluginArtifacts.map(DefaultArtifact::id) + return buildscript.configurations + .flatMap(resolver::resolve) + .distinct() + .filter { it.id !in pluginIds } + .sorted() +} -private fun Project.projectDependencies(explicitConfigurations: List): DefaultDependencies = - with(DependencyResolver(configurations, dependencies)) { - val toResolve = collectConfigurations(explicitConfigurations) - DefaultDependencies( - repositories = repositories.repositories(), - artifacts = toResolve.flatMap { resolveDependencies(it) + resolvePoms(it) } - .sorted() - .distinct() - ) - } +private fun Project.projectDependencies(explicitConfigurations: List): List { + val resolverFactory = ConfigurationResolverFactory(repositories) + val resolver = resolverFactory.create(dependencies) + return collectConfigurations(explicitConfigurations) + .flatMap(resolver::resolve) + .distinct() + .sorted() +} private fun Project.dependentSubprojects(explicitConfigurations: List): Set { return collectConfigurations(explicitConfigurations) @@ -190,19 +193,6 @@ private fun Project.collectConfigurations( } } -private val excludedRepoNames = setOf( - "Embedded Kotlin Repository", - ArtifactRepositoryContainer.DEFAULT_MAVEN_LOCAL_REPO_NAME -) - -internal fun RepositoryHandler.repositories() = DefaultRepositories( - maven = filterIsInstance() - .filter { it.name !in excludedRepoNames } - .map { repo -> - DefaultMaven(listOf(repo.url.toString()) + repo.artifactUrls.map { it.toString() }) - } -) - private fun fetchDistSha256(url: String): String { return URL("$url.sha256").openConnection().run { connect() @@ -217,6 +207,9 @@ private val Wrapper.sha256: String return if (GradleVersion.current() < GradleVersion.version("4.5")) { fetchDistSha256(distributionUrl) } else { + @Suppress("UnstableApiUsage") distributionSha256Sum ?: fetchDistSha256(distributionUrl) } } + +private const val NIX_MODEL_NAME = "org.nixos.gradle2nix.Build" diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt index c6b3dda..2d0fad2 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/ModelProperties.kt @@ -1,6 +1,5 @@ package org.nixos.gradle2nix -import java.util.Properties import org.gradle.api.Project data class ModelProperties( diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt index 6186f3b..c9f5ea2 100644 --- a/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/PluginResolver.kt @@ -1,101 +1,27 @@ package org.nixos.gradle2nix -import org.gradle.api.artifacts.ExternalModuleDependency -import org.gradle.api.internal.GradleInternal -import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelectorScheme -import org.gradle.api.internal.plugins.PluginImplementation -import org.gradle.kotlin.dsl.support.serviceOf +import org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency import org.gradle.plugin.management.PluginRequest -import org.gradle.plugin.management.internal.PluginRequestInternal -import org.gradle.plugin.use.PluginId import org.gradle.plugin.use.internal.PluginDependencyResolutionServices -import org.gradle.plugin.use.resolve.internal.ArtifactRepositoriesPluginResolver -import org.gradle.plugin.use.resolve.internal.PluginResolution -import org.gradle.plugin.use.resolve.internal.PluginResolutionResult -import org.gradle.plugin.use.resolve.internal.PluginResolveContext +import javax.inject.Inject -internal class PluginResolver( - gradle: GradleInternal, - private val pluginRequests: Collection +internal open class PluginResolver @Inject constructor( + pluginDependencyResolutionServices: PluginDependencyResolutionServices ) { - private val pluginDependencyResolutionServices = gradle.serviceOf() - private val versionSelectorScheme = gradle.serviceOf() + private val configurations = pluginDependencyResolutionServices.configurationContainer - private val artifactRepositoriesPluginResolver = ArtifactRepositoriesPluginResolver( - pluginDependencyResolutionServices, - versionSelectorScheme - ) + private val resolver = ConfigurationResolverFactory(pluginDependencyResolutionServices.resolveRepositoryHandler) + .create(pluginDependencyResolutionServices.dependencyHandler) - val repositories = pluginDependencyResolutionServices.resolveRepositoryHandler - - private val resolver by lazy { - DependencyResolver( - pluginDependencyResolutionServices.configurationContainer, - pluginDependencyResolutionServices.dependencyHandler - ) - } - - private val pluginResult by lazy { - PluginResult().apply { - for (request in pluginRequests.filterIsInstance()) { - artifactRepositoriesPluginResolver.resolve(request, this) - } - } - } - - private val pluginContext by lazy { - PluginContext().apply { - for (result in pluginResult.found) result.execute(this) - } - } - - fun artifacts(): List { - return (resolver.resolveDependencies(pluginContext.dependencies, true) + - resolver.resolvePoms(pluginContext.dependencies, true)) - .sorted() - .distinct() - } - - private class PluginResult : PluginResolutionResult { - val found = mutableSetOf() - - override fun notFound(sourceDescription: String?, notFoundMessage: String?) {} - - override fun notFound( - sourceDescription: String?, - notFoundMessage: String?, - notFoundDetail: String? - ) { - } - - override fun isFound(): Boolean = true - - override fun found(sourceDescription: String, pluginResolution: PluginResolution) { - found.add(pluginResolution) - } - } - - private class PluginContext : PluginResolveContext { - val dependencies = mutableSetOf() - val repositories = mutableSetOf() - - override fun add(plugin: PluginImplementation<*>) { - println("add: $plugin") - } - - override fun addFromDifferentLoader(plugin: PluginImplementation<*>) { - println("addFromDifferentLoader: $plugin") - } - - override fun addLegacy(pluginId: PluginId, m2RepoUrl: String, dependencyNotation: Any) { - repositories.add(m2RepoUrl) - } - - override fun addLegacy(pluginId: PluginId, dependencyNotation: Any) { - if (dependencyNotation is ExternalModuleDependency) { - dependencies.add(dependencyNotation) + fun resolve(pluginRequests: List): List { + val markerDependencies = pluginRequests.map { + it.module?.let { selector -> + DefaultExternalModuleDependency(selector.group, selector.name, selector.version) + } ?: it.id.run { + DefaultExternalModuleDependency(id, "$id.gradle.plugin", it.version) } } + return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray())) } } diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt new file mode 100644 index 0000000..4a6c5a2 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/RepositoryResolver.kt @@ -0,0 +1,212 @@ +package org.nixos.gradle2nix + +import org.apache.ivy.core.LogOptions +import org.apache.ivy.core.cache.ArtifactOrigin +import org.apache.ivy.core.cache.CacheResourceOptions +import org.apache.ivy.core.cache.DefaultRepositoryCacheManager +import org.apache.ivy.core.cache.RepositoryCacheManager +import org.apache.ivy.core.module.id.ArtifactRevisionId +import org.apache.ivy.core.module.id.ModuleRevisionId +import org.apache.ivy.core.resolve.DownloadOptions +import org.apache.ivy.core.settings.IvySettings +import org.apache.ivy.plugins.repository.url.URLResource +import org.apache.ivy.plugins.resolver.IBiblioResolver +import org.apache.ivy.plugins.resolver.URLResolver +import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader +import org.codehaus.plexus.util.ReaderFactory +import org.codehaus.plexus.util.xml.pull.XmlPullParserException +import org.gradle.api.artifacts.repositories.ArtifactRepository +import org.gradle.api.artifacts.repositories.IvyArtifactRepository +import org.gradle.api.artifacts.repositories.MavenArtifactRepository +import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository +import org.gradle.api.internal.artifacts.repositories.resolver.IvyResolver +import org.gradle.api.logging.Logger +import org.gradle.api.logging.Logging +import java.io.IOException +import org.apache.ivy.core.module.descriptor.Artifact as IvyArtifact +import org.apache.ivy.core.module.descriptor.DefaultArtifact as IvyDefaultArtifact +import org.apache.ivy.plugins.resolver.RepositoryResolver as IvyRepositoryResolver + +internal fun ResolutionAwareRepository.repositoryResolver(ivySettings: IvySettings): RepositoryResolver? = + when(this) { + is MavenArtifactRepository -> MavenResolver(ivySettings, this) + is IvyArtifactRepository -> IvyResolver(ivySettings, this) + else -> null + } + +internal sealed class RepositoryResolver { + companion object { + @JvmStatic + protected val log: Logger = Logging.getLogger("gradle2nix") + } + + abstract val ivyResolver: IvyRepositoryResolver + + abstract fun resolve( + artifactId: DefaultArtifactIdentifier, + sha256: String? = null + ): DefaultArtifact? +} + +internal class MavenResolver( + ivySettings: IvySettings, + repository: MavenArtifactRepository +) : RepositoryResolver() { + + override val ivyResolver: IBiblioResolver = IBiblioResolver().apply { + name = repository.name + root = repository.url.toString() + isM2compatible = true + settings = ivySettings + setCache(cacheManager(ivySettings, repository).name) + } + + override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { + val ivyArtifact: IvyArtifact = artifactId.toArtifact() + val origin = ivyResolver.locate(ivyArtifact)?.takeIf(ArtifactOrigin::isExists) ?: return null + val hash = sha256 ?: ivyResolver.download(origin, downloadOptions).localFile?.sha256() ?: return null + val snapshotVersion: SnapshotVersion? = artifactId.version.snapshotVersion()?.let { + findSnapshotVersion(artifactId, it) + } + return DefaultArtifact( + id = artifactId, + name = artifactId.filename(snapshotVersion), + path = artifactId.repoPath(), + timestamp = snapshotVersion?.timestamp, + build = snapshotVersion?.build, + urls = listOf(origin.location), + sha256 = hash + ) + } + + private fun findSnapshotVersion( + artifactId: ArtifactIdentifier, + snapshotVersion: SnapshotVersion + ): SnapshotVersion { + if (snapshotVersion.timestamp != null) return snapshotVersion + val metadataLocation = "${ivyResolver.root}${artifactId.repoPath()}/maven-metadata.xml".toUrl() + val metadataFile = ivyResolver.repositoryCacheManager.downloadRepositoryResource( + URLResource(metadataLocation, ivyResolver.timeoutConstraint), + "maven-metadata", + "maven-metadata", + "xml", + CacheResourceOptions(), + ivyResolver.repository + ).localFile + + if (metadataFile == null) { + log.warn("maven-metadata.xml not found for snapshot dependency: $artifactId") + return snapshotVersion + } + + fun parseError(e: Throwable): Pair { + log.error("Failed to parse maven-metadata.xml for artifact: $artifactId") + log.error("Error was: ${e.message}", e) + return null to null + } + + val (timestamp: String?, build: Int?) = try { + MetadataXpp3Reader() + .read(ReaderFactory.newXmlReader(metadataFile)) + .versioning?.snapshot?.run { timestamp to buildNumber } + ?: null to null + } catch (e: IOException) { + parseError(e) + } catch (e: XmlPullParserException) { + parseError(e) + } + + return snapshotVersion.copy(timestamp = timestamp, build = build) + } +} + +internal class IvyResolver( + ivySettings: IvySettings, + repository: IvyArtifactRepository +) : RepositoryResolver() { + + override val ivyResolver: URLResolver = URLResolver().apply { + name = repository.name + val ivyResolver = (repository as ResolutionAwareRepository).createResolver() as IvyResolver + isM2compatible = ivyResolver.isM2compatible + for (p in ivyResolver.ivyPatterns) addIvyPattern(p) + for (p in ivyResolver.artifactPatterns) addArtifactPattern(p) + settings = ivySettings + setCache(cacheManager(ivySettings, repository).name) + } + + override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? { + val ivyArtifact: IvyArtifact = artifactId.toArtifact() + val origin = ivyResolver.locate(ivyArtifact)?.takeIf(ArtifactOrigin::isExists) ?: return null + val hash = sha256 ?: ivyResolver.download(origin, downloadOptions).localFile?.sha256() ?: return null + return DefaultArtifact( + id = DefaultArtifactIdentifier(artifactId), + name = artifactId.filename(null), + path = artifactId.repoPath(), + urls = listOf(origin.location), + sha256 = hash + ) + } +} + +private fun cacheManager(ivySettings: IvySettings, repository: ArtifactRepository): RepositoryCacheManager { + return DefaultRepositoryCacheManager( + "${repository.name}-cache", + ivySettings, + createTempDir("gradle2nix-${repository.name}-cache") + ).also { + ivySettings.addRepositoryCacheManager(it) + } +} + +private val metadataTypes = setOf("pom", "ivy") + +private fun ArtifactIdentifier.toArtifact(): IvyArtifact { + val moduleRevisionId = ModuleRevisionId.newInstance(group, name, version) + val artifactRevisionId = ArtifactRevisionId.newInstance( + moduleRevisionId, + name, + type, + extension, + classifier?.let { mapOf("classifier" to it) } + ) + return IvyDefaultArtifact(artifactRevisionId, null, null, type in metadataTypes) +} + +private data class SnapshotVersion( + val base: String, + val timestamp: String?, + val build: Int? +) { + override fun toString(): String { + return if (timestamp != null && build != null) { + "$base-$timestamp-$build" + } else { + "$base-SNAPSHOT" + } + } +} + +private val SNAPSHOT_REGEX = Regex("^(.*)-SNAPSHOT$") +private val SNAPSHOT_TIMESTAMPED_REGEX = Regex("^(.*)-([0-9]{8}.[0-9]{6})-([0-9]+)$") + +private fun String.snapshotVersion(): SnapshotVersion? { + return SNAPSHOT_REGEX.find(this)?.destructured?.let { (base) -> + SnapshotVersion(base, null, null) + } ?: SNAPSHOT_TIMESTAMPED_REGEX.find(this)?.destructured?.let { (base, timestamp, build) -> + SnapshotVersion(base, timestamp, build.toInt()) + } +} + +private fun ArtifactIdentifier.repoPath(): String = + "${group.replace('.', '/')}/$name/$version" + +private fun ArtifactIdentifier.filename( + snapshotVersion: SnapshotVersion? +): String = buildString { + append(name, "-", snapshotVersion ?: version) + if (classifier != null) append("-", classifier) + append(".", extension) +} + +private val downloadOptions = DownloadOptions().apply { log = LogOptions.LOG_QUIET } \ No newline at end of file diff --git a/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt b/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt new file mode 100644 index 0000000..b3c7927 --- /dev/null +++ b/plugin/src/main/kotlin/org/nixos/gradle2nix/Util.kt @@ -0,0 +1,21 @@ +package org.nixos.gradle2nix + +import java.io.File +import java.net.URL +import java.security.MessageDigest + +private const val HEX = "0123456789abcdef" + +internal fun File.sha256(): String = readBytes().sha256() + +private fun ByteArray.sha256() = buildString { + MessageDigest.getInstance("SHA-256").digest(this@sha256) + .asSequence() + .map(Byte::toInt) + .forEach { + append(HEX[it shr 4 and 0x0f]) + append(HEX[it and 0x0f]) + } +} + +internal fun String.toUrl(): URL = URL(this)