Skip to content

Commit 9a4fe1a

Browse files
committed
refactor parseEnv to remove nesting
1 parent 6f86029 commit 9a4fe1a

1 file changed

Lines changed: 28 additions & 25 deletions

File tree

  • src/main/kotlin/com/github/kindermax/intellijlets

src/main/kotlin/com/github/kindermax/intellijlets/Config.kt

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -82,38 +82,41 @@ class Config(
8282
}
8383

8484
private fun parseEnv(keyValue: YAMLKeyValue): Env {
85-
return when (val value = keyValue.value) {
86-
is YAMLMapping -> value.keyValues.associate {
87-
kv -> kv.keyText to when (kv.value) {
88-
is YAMLScalar -> EnvValue.StringValue(kv.valueText)
89-
is YAMLMapping -> {
90-
val kvv = kv.value as YAMLMapping
91-
kvv.getKeyValueByKey("sh")?.let {
92-
EnvValue.ShMode(it.valueText)
93-
} ?: kvv.getKeyValueByKey("checksum")?.let {
94-
when (it.value) {
95-
is YAMLSequence -> {
96-
EnvValue.ChecksumMode((it.value as YAMLSequence).items.mapNotNull { it.value?.text })
97-
}
85+
val value = keyValue.value as? YAMLMapping ?: return emptyMap()
9886

99-
is YAMLMapping -> {
100-
val checksumMap = it.value as YAMLMapping
101-
EnvValue.ChecksumMapMode(checksumMap.keyValues.associate { entry ->
102-
entry.keyText to (entry.value as YAMLSequence).items.mapNotNull { it.value?.text }
103-
})
104-
}
87+
return value.keyValues.associate { kv ->
88+
kv.keyText to parseEnvValue(kv)
89+
}
90+
}
10591

106-
else -> {
107-
EnvValue.ChecksumMode(emptyList())
108-
}
92+
private fun parseEnvValue(kv: YAMLKeyValue): EnvValue {
93+
return when (val envValue = kv.value) {
94+
is YAMLScalar -> EnvValue.StringValue(envValue.textValue)
95+
is YAMLMapping -> parseMappingEnvValue(envValue)
96+
else -> EnvValue.StringValue("")
97+
}
98+
}
99+
100+
private fun parseMappingEnvValue(value: YAMLMapping): EnvValue {
101+
value.keyValues.forEach { kv ->
102+
when (kv.keyText) {
103+
"sh" -> return EnvValue.ShMode(kv.valueText)
104+
"checksum" -> {
105+
return when (val checksumValue = kv.value) {
106+
is YAMLSequence -> EnvValue.ChecksumMode(
107+
checksumValue.items.mapNotNull { it.value?.text }
108+
)
109+
is YAMLMapping -> EnvValue.ChecksumMapMode(
110+
checksumValue.keyValues.associate { entry ->
111+
entry.keyText to (entry.value as YAMLSequence).items.mapNotNull { it.value?.text }
109112
}
110-
} ?: EnvValue.StringValue("")
113+
)
114+
else -> EnvValue.StringValue("")
111115
}
112-
else -> EnvValue.StringValue("")
113116
}
114117
}
115-
else -> emptyMap()
116118
}
119+
return EnvValue.StringValue("")
117120
}
118121

119122
private fun parseShell(keyValue: YAMLKeyValue): String {

0 commit comments

Comments
 (0)