mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-05-19 06:08:57 +01:00
46 lines
1.2 KiB
JavaScript
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}`;
|
|
}
|