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!')
}