in telemetry/vscode/src/generate.ts [144:182]
export async function generate(args: CommandLineArguments) {
let output = `
/*!
* Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import globals from '../extensionGlobals'
`
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'),
}
output += generateTelemetry(input)
output += generateHelperFunctions()
const options = await prettier.resolveConfig(await readFile(`${__dirname}/../.prettierrc`, 'utf-8'))
const formattedOutput = prettier.format(output, { parser: 'typescript', ...options })
writeFileSync(args.outputFile, formattedOutput)
console.log('Done generating!')
}