Skip to content

Commit

Permalink
fix failing tests in project-extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
jonnyzzz committed Dec 5, 2016
1 parent 3baf976 commit 1bbf311
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
Expand Up @@ -6,7 +6,6 @@ import org.jonnyzzz.teamcity.dsl.model.TCProject
import org.jonnyzzz.teamcity.dsl.model.isEmpty
import org.jonnyzzz.teamcity.dsl.writeUTF
import java.io.File
import kotlin.collections.forEach

val TCProject.className: String
get() = "Project_" + id
Expand Down Expand Up @@ -68,6 +67,18 @@ fun generateProject(context: GenerationContext, home: File, project: TCProject)
}
}

val extensions = project.projectExtensions
if (extensions != null) {
block("extensions") {
extensions.extensions?.forEach { ext ->

block("extension(${ext.id?.quote()}, ${ext.type?.quote()})") {
params(ext.parameters)
}
}
}
}

generateOrdering(context, project)
}

Expand Down
Expand Up @@ -3,6 +3,7 @@ package org.jonnyzzz.teamcity.dsl.api
import org.jonnyzzz.teamcity.dsl.api.internal.DSLRegistry
import org.jonnyzzz.teamcity.dsl.model.*
import org.jonnyzzz.teamcity.dsl.setIfNull
import kotlin.comparisons.compareBy

interface TCProjectOrderingBuilder {
operator fun TCProjectRef.unaryPlus()
Expand Down Expand Up @@ -96,3 +97,34 @@ fun TCProjectRef.project(id : String, builder : TCProject.() -> Unit = {}) : TCP
}
}
}

interface TCProjectExtensionBuilder {
fun param(name : String, value : String? = null, builder: TCParameterBuilder.() -> Unit = {})

}

interface TCProjectExtensionsBuilder {
fun extension(id : String, type : String, builder : TCProjectExtensionBuilder.() -> Unit)
}

fun TCProject.extensions(builder : TCProjectExtensionsBuilder.() -> Unit) {
val host = TCProjectExtensions()
projectExtensions = host

object : TCProjectExtensionsBuilder {
override fun extension(id: String, type: String, builder: TCProjectExtensionBuilder.() -> Unit) {
val ext = TCProjectExtension()
ext.id = id
ext.type = type

object : TCProjectExtensionBuilder {
override fun param(name: String, value: String?, builder: TCParameterBuilder.() -> Unit) {
ext.addParameter(TCProjectExtension::parameters, name, value, builder)
ext.parameters = ext.parameters?.sortedWith(compareBy { it.name ?: "" })
}
}.builder()

host.extensions = (host.extensions ?: listOf()) + ext
}
}.builder()
}

0 comments on commit 1bbf311

Please sign in to comment.