override fun execute()

in ide-diff-builder/src/main/java/org/jetbrains/ide/diff/builder/cli/ApiQualityCheckCommand.kt [66:108]


  override fun execute(freeArgs: List<String>) {
    val cliOptions = CliOptions()
    val args = Args.parse(cliOptions, freeArgs.toTypedArray(), false)
    if (args.size < 2) {
      System.err.println("Paths to <IDE> <metadata.json> must be specified.")
      exitProcess(1)
    }

    val idePath = Paths.get(args[0])
    require(idePath.exists()) { "IDE does not exist: $idePath" }
    require(idePath.isDirectory) { "IDE is not a directory: $idePath" }

    val metadataPath = Paths.get(args[1])
    require(metadataPath.exists()) { "Metadata file does not exist: $metadataPath" }
    require(metadataPath.extension == "json") { "Metadata is not a .json file: $metadataPath" }

    val pluginsBuiltFromSources = readPluginsBuiltFromSources(cliOptions)

    val classFilter = cliOptions.classFilter()
    LOG.info(classFilter.toString())

    val currentBranch = cliOptions.currentBranch.toInt()
    val maxRemovalBranch = cliOptions.maxRemovalBranch.toInt()
    val minExperimentalBranch = cliOptions.minExperimentalBranch.toInt()
    val checkSfrVersionPresence = cliOptions.checkSfrVersionPresence.toBoolean()
    val qualityOptions = ApiQualityOptions(currentBranch, maxRemovalBranch, minExperimentalBranch, checkSfrVersionPresence)

    val metadata = JsonApiReportReader().readApiReport(metadataPath)

    val ide = IdeManager.createManager().createIde(idePath)
    val qualityReport = ApiQualityReport(ide.version, qualityOptions)
    checkApi(ide, classFilter, metadata, qualityOptions, qualityReport)
    findNonDynamicExtensionPoints(ide, pluginsBuiltFromSources, qualityReport)

    val tc = TeamCityLog(System.out)
    val newTcHistory = printReport(qualityReport, tc)
    newTcHistory.writeToFile(Paths.get("tc-tests.json"))

    val previousTcHistory = cliOptions.previousTcTestsFile?.let { Paths.get(it) }?.let { TeamCityHistory.readFromFile(it) }
    if (previousTcHistory != null) {
      newTcHistory.reportOldSkippedTestsSuccessful(previousTcHistory, tc)
    }
  }