override fun run()

in src/main/com/intellij/lang/jsgraphql/ide/introspection/GraphQLConvertJsonIntrospectionToSdlCommand.kt [30:73]


  override fun run() {
    GraphQLConvertJsonIntrospectionToSdlCommandScope.get(project).launch {
      val element = readAction { elementPointer.element } ?: run {
        LOG.warn("Failed to find PSI element for introspection JSON file")
        return@launch
      }

      try {
        val (introspectionJson, outputDir, outputFileName) = readAction {
          val introspectionJson = element.containingFile.text
          val jsonFile = element.containingFile.virtualFile
          val outputDir = jsonFile.parent
          val outputFileName = jsonFile.nameWithoutExtension + ".graphql"
          Triple(introspectionJson, outputDir, outputFileName)
        }
        if (outputDir == null) {
          LOG.error("Failed to find output directory for introspection JSON file")
          return@launch
        }
        val schemaAsSDL = GraphQLIntrospectionService.printIntrospectionAsGraphQL(project, introspectionJson)

        GraphQLIntrospectionSchemaWriter.getInstance(project).createOrUpdateIntrospectionFile(
          IntrospectionOutput(schemaAsSDL, GraphQLIntrospectionService.IntrospectionOutputFormat.SDL),
          outputDir,
          outputFileName,
        )
      }
      catch (e: CancellationException) {
        throw e
      }
      catch (e: Exception) {
        val notification = Notification(
          GRAPHQL_NOTIFICATION_GROUP_ID,
          GraphQLBundle.message("graphql.notification.introspection.error.title"),
          GraphQLBundle.message("graphql.notification.introspection.error.body"),
          NotificationType.ERROR
        ).setImportant(true)

        notifyAboutPossiblyInvalidIntrospectionSchema(notification, e)
        addShowQueryErrorDetailsAction(project, notification, e)
        Notifications.Bus.notify(notification)
      }
    }
  }