mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 08:38:13 -07:00
Turn on the idea template.
This commit is contained in:
parent
4f61fa514c
commit
a1f5b43d73
2 changed files with 77 additions and 15 deletions
|
@ -19,21 +19,83 @@ class IdeaFilesTemplate @Inject constructor() : ITemplate {
|
||||||
override val templateDescription = "Generate files required by IDEA to build the project"
|
override val templateDescription = "Generate files required by IDEA to build the project"
|
||||||
override val pluginName = KobaltPlugin.PLUGIN_NAME
|
override val pluginName = KobaltPlugin.PLUGIN_NAME
|
||||||
|
|
||||||
|
override val instructions = "IDEA files generated"
|
||||||
|
|
||||||
override fun generateTemplate(args: Args, classLoader: ClassLoader) {
|
override fun generateTemplate(args: Args, classLoader: ClassLoader) {
|
||||||
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||||
val data = dependencyData.dependenciesDataFor(homeDir("kotlin/kobalt/kobalt/src/Build.kt"), args)
|
val data = dependencyData.dependenciesDataFor(homeDir("kotlin/kobalt/kobalt/src/Build.kt"), args)
|
||||||
val outputDir = KFiles.makeDir(homeDir("t/idea"))
|
val outputDir = KFiles.makeDir(homeDir("t/idea"))
|
||||||
generateLibraries(data, outputDir)
|
generateLibraries(data, outputDir)
|
||||||
generateModulesXml(data, outputDir)
|
generateModulesXml(data, outputDir)
|
||||||
println("Generating ideaFiles")
|
generateImlFiles(data, outputDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun generateImlFiles(data: DependencyData.GetDependenciesData, outputDir: File) {
|
||||||
|
data.projects.forEach { project ->
|
||||||
|
val dir = KFiles.makeDir(outputDir.absolutePath, File(imlName(project)).parent)
|
||||||
|
val file = File(KFiles.joinDir(outputDir.path, imlName(project)))
|
||||||
|
with(arrayListOf<String>()) {
|
||||||
|
add("""<?xml version="1.0" encoding="UTF-8"?>""")
|
||||||
|
add("""<module type="JAVA_MODULE" version="4">""")
|
||||||
|
add(""" <component name="NewModuleRootManager" inherit-compiler-output="true">""")
|
||||||
|
|
||||||
|
add("""<exclude-output />""")
|
||||||
|
|
||||||
|
add(" <content url=\"file://\$MODULE_DIR$\">")
|
||||||
|
|
||||||
|
//
|
||||||
|
// Source directories
|
||||||
|
//
|
||||||
|
fun sourceDir(dir: String, isTest: Boolean)
|
||||||
|
= " <sourceFolder url=\"file://\$MODULE_DIR$/$dir\" isTestSource=\"$isTest\" />"
|
||||||
|
|
||||||
|
project.sourceDirs.forEach { sourceDir ->
|
||||||
|
add(sourceDir(sourceDir, false))
|
||||||
|
}
|
||||||
|
project.testDirs.forEach { sourceDir ->
|
||||||
|
add(sourceDir(sourceDir, true))
|
||||||
|
}
|
||||||
|
|
||||||
|
add(""" </content>""")
|
||||||
|
|
||||||
|
//
|
||||||
|
// Libraries
|
||||||
|
//
|
||||||
|
add(""" <orderEntry type="inheritedJdk" />""")
|
||||||
|
|
||||||
|
(project.name + compileSuffix()).let {
|
||||||
|
add(" <orderEntry type=\"library\" name=\"$it\" level=\"project\" />")
|
||||||
|
}
|
||||||
|
(project.name + testSuffix()).let {
|
||||||
|
add(" <orderEntry type=\"library\" scope=\"TEST\" name=\"$it\" level=\"project\" />")
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Dependent projects
|
||||||
|
//
|
||||||
|
project.dependentProjects.forEach { dp ->
|
||||||
|
add(""" <orderEntry type="module" module-name="$dp" />""")
|
||||||
|
}
|
||||||
|
|
||||||
|
add(" </component>")
|
||||||
|
add("</module>")
|
||||||
|
|
||||||
|
file.writeText(joinToString("\n"))
|
||||||
|
log(2, "Created $file")
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun imlName(project: DependencyData.ProjectData) =
|
||||||
|
KFiles.joinDir(project.directory, project.name + ".iml")
|
||||||
|
|
||||||
private fun generateModulesXml(data: DependencyData.GetDependenciesData, outputDir: File) {
|
private fun generateModulesXml(data: DependencyData.GetDependenciesData, outputDir: File) {
|
||||||
val modulesXmlFile = File(outputDir, "modules.xml")
|
val modulesXmlFile = File(outputDir, "modules.xml")
|
||||||
with(arrayListOf<String>()) {
|
with(arrayListOf<String>()) {
|
||||||
add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
|
add("""<?xml version="1.0" encoding="UTF-8"?>""")
|
||||||
add("<project version=\"4\">")
|
add("""<project version="4">""")
|
||||||
add(" <component name=\"ProjectModuleManager\">")
|
add(""" <component name="ProjectModuleManager">""")
|
||||||
add(" <modules>")
|
add(" <modules>")
|
||||||
|
|
||||||
fun moduleLine(iml: String)
|
fun moduleLine(iml: String)
|
||||||
|
@ -42,22 +104,24 @@ class IdeaFilesTemplate @Inject constructor() : ITemplate {
|
||||||
|
|
||||||
add(moduleLine("kobalt/Build.kt.iml"))
|
add(moduleLine("kobalt/Build.kt.iml"))
|
||||||
data.projects.forEach {
|
data.projects.forEach {
|
||||||
val iml = KFiles.joinDir(it.directory, it.name + ".iml")
|
add(moduleLine(imlName(it)))
|
||||||
add(moduleLine(iml))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add(" </modules>")
|
add(" </modules>")
|
||||||
add(" </component>")
|
add(" </component>")
|
||||||
add("</project>")
|
add("</project>")
|
||||||
modulesXmlFile.writeText(joinToString("\n"))
|
modulesXmlFile.writeText(joinToString("\n"))
|
||||||
log(1, "Created $modulesXmlFile")
|
log(2, "Created $modulesXmlFile")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun compileSuffix() = " (Compile)"
|
||||||
|
private fun testSuffix() = " (Test)"
|
||||||
|
|
||||||
private fun generateLibraries(data: DependencyData.GetDependenciesData, outputDir: File) {
|
private fun generateLibraries(data: DependencyData.GetDependenciesData, outputDir: File) {
|
||||||
data.projects.forEach {
|
data.projects.forEach {
|
||||||
generateLibrary(it.name, it.compileDependencies, " (Compile)", outputDir)
|
generateLibrary(it.name, it.compileDependencies, compileSuffix(), outputDir)
|
||||||
generateLibrary(it.name, it.testDependencies, " (Test)", outputDir)
|
generateLibrary(it.name, it.testDependencies, testSuffix(), outputDir)
|
||||||
}
|
}
|
||||||
val kobaltDd = DependencyData.DependencyData("kobalt", "compile",
|
val kobaltDd = DependencyData.DependencyData("kobalt", "compile",
|
||||||
KFiles.joinDir(KFiles.distributionsDir, Kobalt.version, "kobalt", "wrapper",
|
KFiles.joinDir(KFiles.distributionsDir, Kobalt.version, "kobalt", "wrapper",
|
||||||
|
@ -70,8 +134,8 @@ class IdeaFilesTemplate @Inject constructor() : ITemplate {
|
||||||
val libraryName = name + suffix
|
val libraryName = name + suffix
|
||||||
val librariesOutputDir = KFiles.makeDir(outputDir.path, "libraries")
|
val librariesOutputDir = KFiles.makeDir(outputDir.path, "libraries")
|
||||||
with(arrayListOf<String>()) {
|
with(arrayListOf<String>()) {
|
||||||
add("<component name=\"libraryTable\">")
|
add("""<component name="libraryTable">""")
|
||||||
add(" <library name=\"$libraryName\">")
|
add(""" <library name="$libraryName">""")
|
||||||
addAll(generateList(compileDependencies, "CLASSES"))
|
addAll(generateList(compileDependencies, "CLASSES"))
|
||||||
addAll(generateList(emptyList(), "JAVADOC"))
|
addAll(generateList(emptyList(), "JAVADOC"))
|
||||||
addAll(generateList(emptyList(), "SOURCES"))
|
addAll(generateList(emptyList(), "SOURCES"))
|
||||||
|
@ -81,7 +145,7 @@ class IdeaFilesTemplate @Inject constructor() : ITemplate {
|
||||||
.replace(".", "_")
|
.replace(".", "_")
|
||||||
val file = File(librariesOutputDir, fileName + ".xml")
|
val file = File(librariesOutputDir, fileName + ".xml")
|
||||||
file.writeText(joinToString("\n"))
|
file.writeText(joinToString("\n"))
|
||||||
log(1, "Created $file")
|
log(2, "Created $file")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,7 @@ import com.google.common.collect.ArrayListMultimap
|
||||||
import com.google.inject.Inject
|
import com.google.inject.Inject
|
||||||
|
|
||||||
class Templates @Inject constructor() : ITemplateContributor {
|
class Templates @Inject constructor() : ITemplateContributor {
|
||||||
override val templates = listOf(JavaBuildGenerator(), KotlinBuildGenerator()
|
override val templates = listOf(JavaBuildGenerator(), KotlinBuildGenerator(), IdeaFilesTemplate())
|
||||||
//, IdeaFilesTemplate()
|
|
||||||
)
|
|
||||||
|
|
||||||
fun list(pluginInfo: PluginInfo) {
|
fun list(pluginInfo: PluginInfo) {
|
||||||
val map = ArrayListMultimap.create<String, ITemplate>()
|
val map = ArrayListMultimap.create<String, ITemplate>()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue