64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
const cp = require('child_process');
|
|
const path = require('path');
|
|
|
|
const appRoot = process.cwd();
|
|
const rootBinDir = path.resolve(__dirname, '..', 'node_modules', '.bin');
|
|
|
|
const generatedPath = path.resolve(appRoot, './src/generated');
|
|
const protosPath = path.resolve(appRoot, './protos');
|
|
const protos = [
|
|
'opentelemetry/proto/common/v1/common.proto',
|
|
'opentelemetry/proto/resource/v1/resource.proto',
|
|
'opentelemetry/proto/trace/v1/trace.proto',
|
|
'opentelemetry/proto/collector/trace/v1/trace_service.proto',
|
|
'opentelemetry/proto/metrics/v1/metrics.proto',
|
|
'opentelemetry/proto/collector/metrics/v1/metrics_service.proto',
|
|
'opentelemetry/proto/logs/v1/logs.proto',
|
|
'opentelemetry/proto/collector/logs/v1/logs_service.proto',
|
|
].map(it => {
|
|
return path.join(protosPath, it);
|
|
});
|
|
|
|
function exec(command, argv) {
|
|
return new Promise((resolve, reject) => {
|
|
const child = cp.spawn(command, argv, {
|
|
shell: true,
|
|
stdio: ['ignore', 'inherit', 'inherit'],
|
|
});
|
|
child.on('exit', (code, signal) => {
|
|
if (code !== 0) {
|
|
reject(new Error(`${command} exited with non-zero code(${code}, ${signal})`));
|
|
return;
|
|
}
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
function pbts(pbjsOutFile) {
|
|
const pbtsOptions = [
|
|
'-o', path.join(generatedPath, 'root.d.ts'),
|
|
];
|
|
return exec(path.resolve(rootBinDir, 'pbts'), [...pbtsOptions, pbjsOutFile]);
|
|
}
|
|
|
|
async function pbjs(files) {
|
|
const outFile = path.join(generatedPath, 'root.js');
|
|
const pbjsOptions = [
|
|
'-t', 'static-module',
|
|
'-p', protosPath,
|
|
'-w', 'commonjs',
|
|
'--null-defaults',
|
|
'-o', outFile,
|
|
];
|
|
await exec(path.resolve(rootBinDir, 'pbjs'), [...pbjsOptions, ...files]);
|
|
return outFile;
|
|
}
|
|
|
|
(async function main() {
|
|
const pbjsOut = await pbjs(protos);
|
|
await pbts(pbjsOut);
|
|
})();
|