Add list of modules available via dependsOn in FacetSettings
Original commit: 106452b5f0
This commit is contained in:
@@ -245,7 +245,8 @@ class KotlinFacetSettings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var implementedModuleNames: List<String> = emptyList()
|
var implementedModuleNames: List<String> = emptyList() // used for first implementation of MPP, aka 'old' MPP
|
||||||
|
var dependsOnModuleNames: List<String> = emptyList() // used for New MPP and later implementations
|
||||||
|
|
||||||
var productionOutputPath: String? = null
|
var productionOutputPath: String? = null
|
||||||
var testOutputPath: String? = null
|
var testOutputPath: String? = null
|
||||||
|
|||||||
@@ -136,14 +136,9 @@ private fun readV2AndLaterConfig(element: Element): KotlinFacetSettings {
|
|||||||
element.getAttributeValue("useProjectSettings")?.let { useProjectSettings = it.toBoolean() }
|
element.getAttributeValue("useProjectSettings")?.let { useProjectSettings = it.toBoolean() }
|
||||||
val targetPlatform = element.getFacetPlatformByConfigurationElement()
|
val targetPlatform = element.getFacetPlatformByConfigurationElement()
|
||||||
this.targetPlatform = targetPlatform
|
this.targetPlatform = targetPlatform
|
||||||
element.getChild("implements")?.let {
|
readModulesList(element, "implements", "implement")?.let { implementedModuleNames = it }
|
||||||
val items = it.getChildren("implement")
|
readModulesList(element, "dependsOnModuleNames", "dependsOn")?.let { dependsOnModuleNames = it }
|
||||||
implementedModuleNames = if (items.isNotEmpty()) {
|
|
||||||
items.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
|
|
||||||
} else {
|
|
||||||
listOfNotNull((it.content.firstOrNull() as? Text)?.textTrim)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
element.getChild("sourceSets")?.let {
|
element.getChild("sourceSets")?.let {
|
||||||
val items = it.getChildren("sourceSet")
|
val items = it.getChildren("sourceSet")
|
||||||
sourceSetNames = items.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
|
sourceSetNames = items.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
|
||||||
@@ -183,6 +178,18 @@ private fun readV2AndLaterConfig(element: Element): KotlinFacetSettings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun readModulesList(element: Element, rootElementName: String, elementName: String): List<String>? {
|
||||||
|
element.getChild(rootElementName)?.let {
|
||||||
|
val items = it.getChildren(elementName)
|
||||||
|
return if (items.isNotEmpty()) {
|
||||||
|
items.mapNotNull { (it.content.firstOrNull() as? Text)?.textTrim }
|
||||||
|
} else {
|
||||||
|
listOfNotNull((it.content.firstOrNull() as? Text)?.textTrim)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
private fun readV2Config(element: Element): KotlinFacetSettings {
|
private fun readV2Config(element: Element): KotlinFacetSettings {
|
||||||
return readV2AndLaterConfig(element).apply {
|
return readV2AndLaterConfig(element).apply {
|
||||||
element.getChild("compilerArguments")?.children?.let { args ->
|
element.getChild("compilerArguments")?.children?.let { args ->
|
||||||
@@ -303,18 +310,9 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
|
|||||||
if (!useProjectSettings) {
|
if (!useProjectSettings) {
|
||||||
element.setAttribute("useProjectSettings", useProjectSettings.toString())
|
element.setAttribute("useProjectSettings", useProjectSettings.toString())
|
||||||
}
|
}
|
||||||
if (implementedModuleNames.isNotEmpty()) {
|
saveModulesList(element, implementedModuleNames, "implements", "implement")
|
||||||
element.addContent(
|
saveModulesList(element, dependsOnModuleNames, "dependsOnModuleNames", "dependsOn")
|
||||||
Element("implements").apply {
|
|
||||||
val singleModule = implementedModuleNames.singleOrNull()
|
|
||||||
if (singleModule != null) {
|
|
||||||
addContent(singleModule)
|
|
||||||
} else {
|
|
||||||
implementedModuleNames.map { addContent(Element("implement").apply { addContent(it) }) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (sourceSetNames.isNotEmpty()) {
|
if (sourceSetNames.isNotEmpty()) {
|
||||||
element.addContent(
|
element.addContent(
|
||||||
Element("sourceSets").apply {
|
Element("sourceSets").apply {
|
||||||
@@ -356,6 +354,21 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun saveModulesList(element: Element, moduleList: List<String>, rootElementName: String, elementName: String) {
|
||||||
|
if (moduleList.isNotEmpty()) {
|
||||||
|
element.addContent(
|
||||||
|
Element(rootElementName).apply {
|
||||||
|
val singleModule = moduleList.singleOrNull()
|
||||||
|
if (singleModule != null) {
|
||||||
|
addContent(singleModule)
|
||||||
|
} else {
|
||||||
|
moduleList.map { addContent(Element(elementName).apply { addContent(it) }) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun CommonCompilerArguments.detectVersionAutoAdvance() {
|
fun CommonCompilerArguments.detectVersionAutoAdvance() {
|
||||||
autoAdvanceLanguageVersion = languageVersion == null
|
autoAdvanceLanguageVersion = languageVersion == null
|
||||||
autoAdvanceApiVersion = apiVersion == null
|
autoAdvanceApiVersion = apiVersion == null
|
||||||
|
|||||||
Reference in New Issue
Block a user