export async function loadConfigFiles()

in src/config-loader.ts [16:59]


export async function loadConfigFiles(
  inputPattern: string
): Promise<FeatureFlag[]> {
  core.info('Loading configuration files from: ' + inputPattern)

  const patterns = inputPattern
    .split('\n')
    .map(s => s.replace(/^!\s+/, '!').trim())
    .filter(x => x !== '')
    .join('\n')

  const files = []
  const globber = await glob.create(patterns)
  for await (const file of globber.globGenerator()) {
    files.push(file)
    core.info(`Using configuration file: ${file}`)
  }

  if (files.length === 0) {
    throw new ArgumentError(`No configuration files found`)
  }

  const configPromises = files.map(async file => {
    core.info(`Parsing : ${file}`)

    const fileConfig = await parseConfigFile(file)
    const isValid = validator(fileConfig)
    if (!isValid) {
      const message = `Schema validation failed for file: ${file}. It should follow the schema defined in https://github.com/Azure/app-configuration-deploy-feature-flags/tree/main/schema/FeatureManagement.v2.0.0.schema.json. Error details: ${JSON.stringify(validator.errors)}`
      core.error(message)
      throw new ValidationError(message)
    }
    return fileConfig
  })

  const configs = await Promise.all(configPromises)

  core.info('Merging loaded configuration')

  const mergedFlags = configs
    .map(config => config?.feature_management?.feature_flags)
    .flat()
  return mergedFlags
}