mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 15:30:38 -05:00
Use Gradle Tooling API
This commit is contained in:
15
model/build.gradle.kts
Normal file
15
model/build.gradle.kts
Normal 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")
|
||||
}
|
||||
10
model/gradle/dependency-locks/compileClasspath.lockfile
Normal file
10
model/gradle/dependency-locks/compileClasspath.lockfile
Normal 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
|
||||
3
model/gradle/dependency-locks/runtimeClasspath.lockfile
Normal file
3
model/gradle/dependency-locks/runtimeClasspath.lockfile
Normal 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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
117
model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt
Normal file
117
model/src/main/kotlin/org/nixos/gradle2nix/Impl.kt
Normal 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())
|
||||
}
|
||||
52
model/src/main/kotlin/org/nixos/gradle2nix/Model.kt
Normal file
52
model/src/main/kotlin/org/nixos/gradle2nix/Model.kt
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user