Use Gradle Tooling API

This commit is contained in:
Tad Fisher
2019-05-28 17:19:32 -07:00
parent dc9d1bfda6
commit 13a84d7518
40 changed files with 921 additions and 633 deletions

15
model/build.gradle.kts Normal file
View File

@@ -0,0 +1,15 @@
plugins {
`embedded-kotlin`
kotlin("kapt")
}
repositories {
mavenCentral()
maven { url = uri("https://repo.gradle.org/gradle/libs-releases") }
}
dependencies {
compileOnly("com.squareup.moshi:moshi:1.8.0")
compileOnly("com.squareup.okio:okio:2.2.2")
kapt("com.squareup.moshi:moshi-kotlin-codegen:1.8.0")
}

View File

@@ -0,0 +1,10 @@
# 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.8.0
com.squareup.okio:okio:2.2.2
org.jetbrains.kotlin:kotlin-reflect:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21
org.jetbrains.kotlin:kotlin-stdlib:1.3.21
org.jetbrains:annotations:13.0

View File

@@ -0,0 +1,3 @@
# 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.

View File

@@ -0,0 +1,8 @@
# 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.
org.jetbrains.kotlin:kotlin-reflect:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21
org.jetbrains.kotlin:kotlin-stdlib:1.3.21
org.jetbrains:annotations:13.0

View File

@@ -0,0 +1,8 @@
# 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.
org.jetbrains.kotlin:kotlin-reflect:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21
org.jetbrains.kotlin:kotlin-stdlib:1.3.21
org.jetbrains:annotations:13.0

View File

@@ -0,0 +1,117 @@
package org.nixos.gradle2nix
import com.squareup.moshi.JsonClass
import java.io.Serializable
@JsonClass(generateAdapter = true)
data class DefaultBuild(
override val gradle: DefaultGradle,
override val pluginDependencies: DefaultDependencies,
override val rootProject: DefaultProject,
override val includedBuilds: List<DefaultIncludedBuild>
) : Build, Serializable {
constructor(model: Build) : this(
DefaultGradle(model.gradle),
DefaultDependencies(model.pluginDependencies),
DefaultProject(model.rootProject),
model.includedBuilds.map { DefaultIncludedBuild(it) }
)
}
@JsonClass(generateAdapter = true)
data class DefaultIncludedBuild(
override val name: String,
override val projectDir: String
) : IncludedBuild, Serializable {
constructor(model: IncludedBuild) : this(
model.name,
model.projectDir
)
}
@JsonClass(generateAdapter = true)
data class DefaultGradle(
override val version: String,
override val type: String,
override val url: String,
override val sha256: String,
override val nativeVersion: String
) : Gradle, Serializable {
constructor(model: Gradle) : this(
model.version,
model.type,
model.url,
model.sha256,
model.nativeVersion
)
}
@JsonClass(generateAdapter = true)
data class DefaultProject(
override val name: String,
override val path: String,
override val projectDir: String,
override val buildscriptDependencies: DefaultDependencies,
override val projectDependencies: DefaultDependencies,
override val children: List<DefaultProject>
) : Project, Serializable {
constructor(model: Project) : this(
model.name,
model.path,
model.projectDir,
DefaultDependencies(model.buildscriptDependencies),
DefaultDependencies(model.projectDependencies),
model.children.map { DefaultProject(it) }
)
}
@JsonClass(generateAdapter = true)
data class DefaultDependencies(
override val repositories: DefaultRepositories,
override val artifacts: List<DefaultArtifact>
) : Dependencies, Serializable {
constructor(model: Dependencies) : this(
DefaultRepositories(model.repositories),
model.artifacts.map { DefaultArtifact(it) }
)
}
@JsonClass(generateAdapter = true)
data class DefaultRepositories(
override val maven: List<DefaultMaven>
) : Repositories, Serializable {
constructor(model: Repositories) : this(
model.maven.map { DefaultMaven(it) }
)
}
@JsonClass(generateAdapter = true)
data class DefaultMaven(
override val urls: List<String>
) : 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 sha256: String
) : Artifact, Comparable<DefaultArtifact>, Serializable {
constructor(model: Artifact) : this(
model.groupId,
model.artifactId,
model.version,
model.classifier,
model.extension,
model.sha256
)
override fun toString() = "$groupId:$artifactId:$version:$classifier:$extension"
override fun compareTo(other: DefaultArtifact): Int = toString().compareTo(other.toString())
}

View File

@@ -0,0 +1,52 @@
package org.nixos.gradle2nix
interface Build {
val gradle: Gradle
val pluginDependencies: Dependencies
val rootProject: Project
val includedBuilds: List<IncludedBuild>
}
interface IncludedBuild {
val name: String
val projectDir: String
}
interface Gradle {
val version: String
val type: String
val url: String
val sha256: String
val nativeVersion: String
}
interface Project {
val name: String
val path: String
val projectDir: String
val buildscriptDependencies: Dependencies
val projectDependencies: Dependencies
val children: List<Project>
}
interface Dependencies {
val repositories: Repositories
val artifacts: List<Artifact>
}
interface Repositories {
val maven: List<Maven>
}
interface Maven {
val urls: List<String>
}
interface Artifact {
val groupId: String
val artifactId: String
val version: String
val classifier: String
val extension: String
val sha256: String
}