Files
Desktop/scripts/utils/generateTaggedVersion.mjs
2026-04-02 13:20:15 -07:00

46 lines
1.2 KiB
JavaScript

// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
// @ts-check
import * as semver from 'semver';
/**
* @typedef {{
* release: string;
* currentVersion: string;
* shortSha: string;
* }} Options
*/
/**
* @param {Options} options
* @returns {string}
*/
export function generateTaggedVersion(options) {
const { release, currentVersion, shortSha } = options;
const parsed = semver.parse(currentVersion);
if (!parsed) {
throw new Error(`generateTaggedVersion: Invalid version ${currentVersion}`);
}
const dateTimeParts = new Intl.DateTimeFormat('en', {
day: '2-digit',
hour: '2-digit',
hourCycle: 'h23',
month: '2-digit',
timeZone: 'GMT',
year: 'numeric',
}).formatToParts(new Date());
const dateTimeMap = new Map();
dateTimeParts.forEach(({ type, value }) => {
dateTimeMap.set(type, value);
});
const formattedDate = `${dateTimeMap.get('year')}${dateTimeMap.get(
'month'
)}${dateTimeMap.get('day')}.${dateTimeMap.get('hour')}`;
const formattedVersion = `${parsed.major}.${parsed.minor}.${parsed.patch}`;
return `${formattedVersion}-${release}.${formattedDate}-${shortSha}`;
}