Skip to content

Commit d5812ec

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

1 file changed

Lines changed: 29 additions & 28 deletions

File tree

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

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

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,37 +82,38 @@ 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-
}
109-
}
110-
} ?: EnvValue.StringValue("")
111-
}
112-
else -> EnvValue.StringValue("")
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+
return value.getKeyValueByKey("sh")?.valueText?.let { EnvValue.ShMode(it) }
102+
?: parseChecksumValue(value)
103+
?: EnvValue.StringValue("")
104+
}
105+
106+
private fun parseChecksumValue(value: YAMLMapping): EnvValue? {
107+
val checksumValue = value.getKeyValueByKey("checksum")?.value ?: return null
108+
109+
return when (checksumValue) {
110+
is YAMLSequence -> EnvValue.ChecksumMode(checksumValue.items.mapNotNull { it.value?.text })
111+
is YAMLMapping -> EnvValue.ChecksumMapMode(
112+
checksumValue.keyValues.associate { entry ->
113+
entry.keyText to (entry.value as YAMLSequence).items.mapNotNull { it.value?.text }
113114
}
114-
}
115-
else -> emptyMap()
115+
)
116+
else -> null
116117
}
117118
}
118119

0 commit comments

Comments
 (0)