export async function generate()

in telemetry/vscode/src/generate.ts [47:77]


export async function generate(args: CommandLineArguments) {
    const rawDefinitions: MetricDefinitionRoot = args.inputFiles
        .map(path => {
            const fileInput = readFileSync(path, 'utf8')
            return validateInput(fileInput, path)
        })
        .reduce(
            (item: MetricDefinitionRoot, input: MetricDefinitionRoot) => {
                item.types?.push(...(input.types ?? []))
                item.metrics.push(...input.metrics)
                return item
            },
            { types: [], metrics: [] }
        )
    // Allow read in files to overwrite default definitions. First one wins, so the extra
    // files are read before the default resources (above)
    const input = {
        types: _.uniqBy(rawDefinitions.types, 'name'),
        metrics: _.uniqBy(rawDefinitions.metrics, 'name'),
    }

    const output = generateFile(input, args.outputFile)
    const options: prettierOptions = JSON.parse(await readFile(`${__dirname}/../.prettierrc`, 'utf-8'))
    options.parser = 'typescript'
    // Because we use 'prettier/standalone', we need to explicitly pass the plugins.
    options.plugins = [parserTypeScript, parserEstree]
    const formattedOutput = await prettier.format(output.getFullText(), options)
    await writeFile(output.getFilePath(), formattedOutput)

    console.log('Done generating!')
}