mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 08:27:12 -07:00
Generating .idea/libraries.
This commit is contained in:
parent
61ad74f6ee
commit
2de101cfe7
2 changed files with 90 additions and 2 deletions
84
src/main/kotlin/com/beust/kobalt/app/IdeaFilesTemplate.kt
Normal file
84
src/main/kotlin/com/beust/kobalt/app/IdeaFilesTemplate.kt
Normal file
|
@ -0,0 +1,84 @@
|
|||
package com.beust.kobalt.app
|
||||
|
||||
import com.beust.kobalt.Args
|
||||
import com.beust.kobalt.api.ITemplate
|
||||
import com.beust.kobalt.api.Kobalt
|
||||
import com.beust.kobalt.app.remote.DependencyData
|
||||
import com.beust.kobalt.homeDir
|
||||
import com.beust.kobalt.misc.KFiles
|
||||
import com.beust.kobalt.misc.log
|
||||
import com.beust.kobalt.plugin.KobaltPlugin
|
||||
import com.google.inject.Inject
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* A template that generates IDEA files.
|
||||
*/
|
||||
class IdeaFilesTemplate @Inject constructor() : ITemplate {
|
||||
override val templateName = "idea"
|
||||
override val templateDescription = "Generate files required by IDEA to build the project"
|
||||
override val pluginName = KobaltPlugin.PLUGIN_NAME
|
||||
|
||||
override fun generateTemplate(args: Args, classLoader: ClassLoader) {
|
||||
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||
val data = dependencyData.dependenciesDataFor(homeDir("kotlin/kobalt/kobalt/src/Build.kt"), args)
|
||||
val outputDir = KFiles.makeDir(homeDir("t/idea"))
|
||||
generateLibraries(data, outputDir)
|
||||
println("Generating ideaFiles")
|
||||
}
|
||||
|
||||
private fun generateLibraries(data: DependencyData.GetDependenciesData, outputDir: File) {
|
||||
data.projects.forEach {
|
||||
generateLibrary(it.name, it.compileDependencies, " (Compile)", outputDir)
|
||||
generateLibrary(it.name, it.testDependencies, " (Test)", outputDir)
|
||||
}
|
||||
val kobaltDd = DependencyData.DependencyData("kobalt", "compile",
|
||||
KFiles.joinDir(KFiles.distributionsDir, Kobalt.version, "kobalt", "wrapper",
|
||||
"kobalt-${Kobalt.version}.jar"))
|
||||
generateLibrary("kobalt.jar", listOf(kobaltDd), "", outputDir)
|
||||
}
|
||||
|
||||
private fun generateLibrary(name: String, compileDependencies: List<DependencyData.DependencyData>,
|
||||
suffix: String, outputDir: File) {
|
||||
val libraryName = name + suffix
|
||||
log(1, "Generating libraries for $name$suffix")
|
||||
val librariesOutputDir = KFiles.makeDir(outputDir.path, "libraries")
|
||||
with(arrayListOf<String>()) {
|
||||
add("<component name=\"libraryTable\">")
|
||||
add(" <library name=\"$libraryName\">")
|
||||
addAll(generateList(compileDependencies, "CLASSES"))
|
||||
addAll(generateList(emptyList(), "JAVADOC"))
|
||||
addAll(generateList(emptyList(), "SOURCES"))
|
||||
add(" </library>")
|
||||
add("</component>")
|
||||
val fileName = libraryName.replace(" ", "_").replace("-", "_").replace("(", "_").replace(")", "_")
|
||||
.replace(".", "_")
|
||||
val file = File(librariesOutputDir, fileName + ".xml")
|
||||
file.writeText(joinToString("\n"))
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateList(libraries: List<DependencyData.DependencyData>, tag: String) : List<String> {
|
||||
if (libraries.isEmpty()){
|
||||
return listOf(" <$tag />")
|
||||
} else {
|
||||
val result = arrayListOf<String>()
|
||||
result.add(" <$tag>")
|
||||
libraries.forEach {
|
||||
val path =
|
||||
if (it.path.contains(".kobalt")) {
|
||||
val ind = it.path.indexOf(".kobalt")
|
||||
"\$USER_HOME$/" + it.path.substring(ind)
|
||||
} else {
|
||||
it.path
|
||||
}
|
||||
result.add(" <root url=\"jar://$path!/\" />")
|
||||
}
|
||||
|
||||
result.add(" </$tag>")
|
||||
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -4,12 +4,16 @@ import com.beust.kobalt.api.ITemplate
|
|||
import com.beust.kobalt.api.ITemplateContributor
|
||||
import com.beust.kobalt.app.java.JavaBuildGenerator
|
||||
import com.beust.kobalt.app.kotlin.KotlinBuildGenerator
|
||||
import com.beust.kobalt.app.remote.DependencyData
|
||||
import com.beust.kobalt.internal.PluginInfo
|
||||
import com.beust.kobalt.misc.log
|
||||
import com.google.common.collect.ArrayListMultimap
|
||||
import com.google.inject.Inject
|
||||
|
||||
class Templates : ITemplateContributor {
|
||||
override val templates = listOf(JavaBuildGenerator(), KotlinBuildGenerator())
|
||||
class Templates @Inject constructor() : ITemplateContributor {
|
||||
override val templates = listOf(JavaBuildGenerator(), KotlinBuildGenerator(),
|
||||
//IdeaFilesTemplate()
|
||||
)
|
||||
|
||||
fun list(pluginInfo: PluginInfo) {
|
||||
val map = ArrayListMultimap.create<String, ITemplate>()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue