in intellij-plugin-verifier/verifier-cli/src/main/java/com/jetbrains/pluginverifier/options/PluginsParsing.kt [110:150]
fun addPluginBySpec(spec: String, basePath: Path, ideVersions: List<IdeVersion>) {
if (spec.startsWith('$') || spec.endsWith('$')) {
val pluginId = spec.trim('$').trim()
ideVersions.forEach { addLastCompatibleVersionOfPlugin(pluginId, it) }
return
}
if (spec.startsWith("#")) {
val updateId = spec.substringAfter("#").toIntOrNull() ?: return
addUpdateById(updateId)
return
}
if (spec.startsWith("id:")) {
val pluginId = spec.substringAfter("id:")
ideVersions.forEach { addAllCompatibleVersionsOfPlugin(pluginId, it) }
return
}
if (spec.startsWith("version:")) {
val idAndVersion = spec.substringAfter("version:")
val id = idAndVersion.substringBefore(":").trim()
val version = idAndVersion.substringAfter(":").trim()
require(version.isNotEmpty()) { "Empty version specified for a plugin to be checked: {$spec}" }
addPluginVersion(id, version)
return
}
val pluginFile = if (spec.startsWith("path:")) {
val linePath = spec.substringAfter("path:")
tryFindPluginByPath(basePath, linePath) ?: throw IllegalArgumentException("Invalid path: $linePath")
} else {
tryFindPluginByPath(basePath, spec)
}
if (pluginFile != null) {
addPluginFile(pluginFile, true)
} else {
ideVersions.forEach { addAllCompatibleVersionsOfPlugin(spec, it) }
}
}