fun validate()

in intellij-plugin-structure/structure-toolbox/src/main/kotlin/com/jetbrains/plugin/structure/toolbox/ToolboxPluginDescriptor.kt [32:103]


  fun validate(): List<PluginProblem> {
    val problems = mutableListOf<PluginProblem>()
    when {
      id.isNullOrBlank() -> {
        problems.add(PropertyNotSpecified("id"))
      }

      !ID_REGEX.matches(id) -> {
        problems.add(InvalidPluginIDProblem(id))
      }
    }

    if (version.isNullOrBlank()) {
      problems.add(PropertyNotSpecified("version"))
    }

    if (meta?.description.isNullOrBlank()) {
      problems.add(PropertyNotSpecified("meta.description"))
    }

    if (meta?.vendor.isNullOrBlank()) {
      problems.add(PropertyNotSpecified("meta.vendor"))
    }

    if (apiVersion.isNullOrBlank()) {
      problems.add(PropertyNotSpecified("apiVersion"))
    } else {
      val apiVersionParsed = parseVersionOrNull(apiVersion)
      if (apiVersionParsed == null) {
        problems.add(
          InvalidSemverFormat(
            descriptorPath = ToolboxPluginManager.DESCRIPTOR_NAME,
            versionName = "apiVersion",
            version = apiVersion
          )
        )
      } else {
        problems.addAll(validateVersion("apiVersion", apiVersionParsed))
      }
    }

    val readableName = meta?.name
    when {
      readableName.isNullOrBlank() -> {
        problems.add(PropertyNotSpecified("meta.name"))
      }

      else -> {
        validatePropertyLength(
          descriptor = ToolboxPluginManager.DESCRIPTOR_NAME,
          propertyName = "meta.name",
          propertyValue = readableName,
          maxLength = MAX_NAME_LENGTH,
          problems = problems
        )
        validatePluginNameIsCorrect(
          descriptor = ToolboxPluginManager.DESCRIPTOR_NAME,
          name = readableName,
          problems = problems
        )
      }
    }
    val metaUrl = meta?.url
    if (metaUrl != null) {
      try {
        URL(metaUrl)
      } catch (_: MalformedURLException) {
        problems.add(InvalidUrl(metaUrl, "meta.url"))
      }
    }
    return problems
  }