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
}