export async function openapiValidatorPluginFunc()

in packages/azure-openapi-validator/autorest/src/openapi-validator-plugin-func.ts [7:67]


export async function openapiValidatorPluginFunc(initiator: IAutoRestPluginInitiator): Promise<void> {
  initiator.Message({
    Channel: "information",
    Text: `openapiValidatorPluginFunc: Enter`,
  })

  const files = await (await initiator.ListInputs()).filter((f) => !isCommonTypes(f))
  const openapiType: string = await getOpenapiTypeStr(initiator)
  const sendMessage = (msg: LintResultMessage) => {
    initiator.Message(convertLintMsgToAutoRestMsg(msg))
  }

  const readFile = async (fileUri: string): Promise<string> => {
    if (isExample(fileUri)) {
      return ""
    }
    let file: string | undefined = cachedFiles.get(fileUri)
    if (!file) {
      file = await initiator.ReadFile(fileUri)
      if (!file) {
        throw new Error(`Could not read file: ${fileUri} .`)
      }
      cachedFiles.set(fileUri, file)
    }
    return file
  }

  const defaultFileSystem = {
    read: readFile,
  }
  initiator.Message({
    Channel: "information",
    Text: `openapiValidatorPluginFunc: Validating files:`,
  })
  for (const [index, file] of files.entries()) {
    initiator.Message({
      Channel: "information",
      Text: `openapiValidatorPluginFunc: File ${index + 1}/${files.length}: '${file}'`,
    })
  }

  try {
    const mergedRuleset: IRuleSet = mergeRulesets(Object.values(nativeRulesets))

    const resolvedOpenapiType = getOpenapiType(openapiType)

    printRuleNames(initiator, mergedRuleset, resolvedOpenapiType)

    await lint(files, { ruleSet: mergedRuleset, fileSystem: defaultFileSystem, openapiType: resolvedOpenapiType }, sendMessage)
  } catch (e) {
    initiator.Message({
      Channel: "fatal",
      Text: `openapiValidatorPluginFunc: Failed validating: ` + e,
    })
  }

  initiator.Message({
    Channel: "information",
    Text: `openapiValidatorPluginFunc: Return`,
  })
}