in intellij-plugin-verifier/verifier-cli/src/main/java/com/jetbrains/pluginverifier/tasks/checkPlugin/CheckPluginParamsBuilder.kt [39:102]
override fun build(opts: CmdOpts, freeArgs: List<String>): CheckPluginParams {
val internalApiVerificationMode = OptionsParser.parseInternalApiVerificationMode(opts)
require(freeArgs.size > 1) {
"You must specify plugin to check and IDE(s), example:\n" +
"java -jar verifier.jar check-plugin ~/work/myPlugin/myPlugin.zip ~/EAPs/idea-IU-117.963\n" +
"java -jar verifier.jar check-plugin #14986 ~/EAPs/idea-IU-117.963"
}
val ideDescriptors = ideDescriptorParser.parseIdeDescriptors(opts, freeArgs)
val ideVersions = ideDescriptors.map { it.ideVersion }
val pluginParsingConfiguration = OptionsParser.createPluginParsingConfiguration(opts)
val pluginsSet = PluginsSet()
// pluginsParsing will modify [pluginsSet] in-place.
val pluginsParsing = PluginsParsing(pluginRepository, archiveManager, reportage, pluginsSet, pluginParsingConfiguration)
val pluginToTestArg = freeArgs[0]
when {
pluginToTestArg.startsWith("@") -> {
pluginsParsing.addPluginsListedInFile(
Paths.get(pluginToTestArg.substringAfter("@")),
ideVersions
)
}
else -> {
pluginsParsing.addPluginBySpec(pluginToTestArg, Paths.get(""), ideVersions)
}
}
val externalClassesPackageFilter = OptionsParser.getExternalClassesPackageFilter(opts)
val problemsFilters = OptionsParser.getProblemsFilters(opts)
val verificationDescriptors = ideDescriptors.flatMap { ideDescriptor ->
val dependencyFinder = createDependencyFinder(pluginsSet.localRepository, ideDescriptor, pluginDetailsCache)
val classResolverProvider = DefaultClassResolverProvider(
dependencyFinder,
ideDescriptor,
externalClassesPackageFilter,
archiveManager = archiveManager
)
pluginsSet.pluginsToCheck.map {
PluginVerificationDescriptor.IDE(ideDescriptor, classResolverProvider, it)
}
}
val verificationTargets = ideDescriptors.map {
PluginVerificationTarget.IDE(it.ideVersion, it.jdkVersion)
}
pluginsSet.ignoredPlugins.forEach { (plugin, reason) ->
verificationTargets.forEach { verificationTarget ->
reportage.logPluginVerificationIgnored(plugin, verificationTarget, reason)
}
}
return CheckPluginParams(
ideDescriptors,
problemsFilters,
verificationDescriptors,
pluginsSet.invalidPluginFiles,
opts.excludeExternalBuildClassesSelector,
internalApiVerificationMode
)
}