fun addPluginBySpec()

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) }
    }
  }