[python]: extract sdk set/get logic in the plugin to be reused internally

GitOrigin-RevId: 619bbe8d5a7988a1cf6516ea63bb2e502ae6afbe
This commit is contained in:
Edem Ibraimov
2024-06-18 09:45:04 +03:00
committed by intellij-monorepo-bot
parent f28bb6e5c8
commit 54991c6e94

View File

@@ -12,48 +12,58 @@ import com.jetbrains.python.configuration.PyActiveSdkConfigurable
import com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable
import com.jetbrains.python.sdk.removeTransferredRoots
import com.jetbrains.python.sdk.transferRoots
import org.jetbrains.annotations.ApiStatus
internal class PyPluginSdkModuleConfigurable(project: Project?) : PyActiveSdkModuleConfigurable(project) {
override fun createModuleConfigurable(module: Module): UnnamedConfigurable {
return object : PyActiveSdkConfigurable(module) {
override fun setSdk(item: Sdk?) {
val facetManager = FacetManager.getInstance(module)
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
if (facet == null) {
ApplicationManager.getApplication().runWriteAction {
addFacet(facetManager, item, module)
}
}
else {
setFacetSdk(facet, item, module)
}
setSdkToFacet(item, module)
}
override fun getSdk(): Sdk? {
val facetManager = FacetManager.getInstance(module)
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
return facet?.configuration?.sdk
return getSdkFromFacet(module)
}
}
}
}
private fun setFacetSdk(facet: MinorPythonFacet,
item: Sdk?,
module: Module) {
removeTransferredRoots(module, facet.configuration.sdk)
facet.configuration.sdk = item
transferRoots(module, item)
FacetManager.getInstance(module).facetConfigurationChanged(facet)
PythonFacetUtil.updateLibrary(module, facet.configuration)
@ApiStatus.Internal
fun setSdkToFacet(item: Sdk?, module: Module) {
val facetManager = FacetManager.getInstance(module)
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
if (facet == null) {
ApplicationManager.getApplication().runWriteAction {
addFacet(facetManager, item, module)
}
}
private fun addFacet(facetManager: FacetManager,
sdk: Sdk?,
module: Module) {
val facet = facetManager.addFacet(
MinorPythonFacetType.getInstance(), "Python facet", null)
setFacetSdk(facet, sdk, module)
else {
setFacetSdk(facet, item, module)
}
}
}
@ApiStatus.Internal
fun getSdkFromFacet(module: Module): Sdk? {
val facetManager = FacetManager.getInstance(module)
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
return facet?.configuration?.sdk
}
private fun setFacetSdk(facet: MinorPythonFacet,
item: Sdk?,
module: Module) {
removeTransferredRoots(module, facet.configuration.sdk)
facet.configuration.sdk = item
transferRoots(module, item)
FacetManager.getInstance(module).facetConfigurationChanged(facet)
PythonFacetUtil.updateLibrary(module, facet.configuration)
}
private fun addFacet(facetManager: FacetManager,
sdk: Sdk?,
module: Module) {
val facet = facetManager.addFacet(
MinorPythonFacetType.getInstance(), "Python facet", null)
setFacetSdk(facet, sdk, module)
}