101 lines
2.4 KiB
TypeScript
101 lines
2.4 KiB
TypeScript
|
// Copyright 2024 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { stat } from 'node:fs/promises';
|
||
|
import { join } from 'node:path';
|
||
|
|
||
|
import { name as NAME, version as VERSION } from '../../package.json';
|
||
|
|
||
|
const SUPPORT_CONFIG = new Set([
|
||
|
'linux',
|
||
|
'windows',
|
||
|
'macos-arm64',
|
||
|
'macos-x64',
|
||
|
'macos-universal',
|
||
|
]);
|
||
|
|
||
|
const RELEASE_DIR = join(__dirname, '..', '..', 'release');
|
||
|
|
||
|
async function main(): Promise<void> {
|
||
|
const config = process.argv[2];
|
||
|
if (!SUPPORT_CONFIG.has(config)) {
|
||
|
throw new Error(`Invalid argument: ${config}`);
|
||
|
}
|
||
|
|
||
|
const { DD_API_KEY } = process.env;
|
||
|
if (DD_API_KEY == null) {
|
||
|
throw new Error('Missing DD_API_KEY env variable');
|
||
|
}
|
||
|
|
||
|
let fileName: string;
|
||
|
let platform: string;
|
||
|
let arch: string;
|
||
|
if (config === 'linux') {
|
||
|
fileName = `${NAME}_${VERSION}_amd64.deb`;
|
||
|
platform = 'linux';
|
||
|
arch = 'x64';
|
||
|
} else if (config === 'windows') {
|
||
|
fileName = `${NAME}-win-${VERSION}.exe`;
|
||
|
platform = 'windows';
|
||
|
arch = 'x64';
|
||
|
} else if (config === 'macos-arm64') {
|
||
|
fileName = `${NAME}-mac-arm64-${VERSION}.dmg`;
|
||
|
platform = 'macos';
|
||
|
arch = 'arm64';
|
||
|
} else if (config === 'macos-x64') {
|
||
|
fileName = `${NAME}-mac-x64-${VERSION}.dmg`;
|
||
|
platform = 'macos';
|
||
|
arch = 'x64';
|
||
|
} else if (config === 'macos-universal') {
|
||
|
fileName = `${NAME}-mac-universal-${VERSION}.dmg`;
|
||
|
platform = 'macos';
|
||
|
arch = 'universal';
|
||
|
} else {
|
||
|
throw new Error(`Unsupported config: ${config}`);
|
||
|
}
|
||
|
|
||
|
const filePath = join(RELEASE_DIR, fileName);
|
||
|
const { size } = await stat(filePath);
|
||
|
|
||
|
const res = await fetch('https://api.datadoghq.com/api/v2/series', {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'content-type': 'application/json',
|
||
|
'DD-API-KEY': DD_API_KEY,
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
series: [
|
||
|
{
|
||
|
metric: 'desktop.ci.installerSize',
|
||
|
type: 0,
|
||
|
points: [
|
||
|
{
|
||
|
timestamp: Math.floor(Date.now() / 1000),
|
||
|
value: size,
|
||
|
},
|
||
|
],
|
||
|
tags: [
|
||
|
`hash:${process.env.GITHUB_SHA ?? ''}`,
|
||
|
`platform:${platform}`,
|
||
|
`arch:${arch}`,
|
||
|
],
|
||
|
},
|
||
|
],
|
||
|
}),
|
||
|
});
|
||
|
|
||
|
if (!res.ok) {
|
||
|
throw new Error(
|
||
|
`Failed to submit metrics, status: ${res.status}, ` +
|
||
|
`body: ${await res.text()}`
|
||
|
);
|
||
|
}
|
||
|
|
||
|
console.log(`Submitted: ${size}`);
|
||
|
}
|
||
|
|
||
|
main().catch(err => {
|
||
|
console.error('Failed', err);
|
||
|
process.exit(1);
|
||
|
});
|