Files
rd_mes_uniapp/utils/parseRelease.js
2025-12-18 14:11:48 +08:00

109 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function getBeijingTime(date = new Date()) {
const f = n => String(n).padStart(2, '0');
const t = new Date(date.toLocaleString('en-US', { timeZone: 'Asia/Shanghai' }));
return `${t.getFullYear()}-${f(t.getMonth()+1)}-${f(t.getDate())} ${f(t.getHours())}:${f(t.getMinutes())}:${f(t.getSeconds())}`;
}
/**
* 获取最新发布版本信息
* @param {Array} releases - 发布版本数组
* @param {Object} options - 配置项
* @param {boolean} options.includePrerelease - 是否包含预发布版(默认 true
* @returns {Object|null} 最新版本信息
*/
export function getLatestRelease(releases, options = {}) {
const { includePrerelease = true } = options;
try {
if (!Array.isArray(releases)) {
throw new Error("参数错误releases 必须是数组");
}
if (releases.length === 0) {
throw new Error("没有可用的版本数据");
}
// 过滤掉预发布(如果不包含)
let filtered = releases;
if (!includePrerelease) {
filtered = releases.filter(r => !r.prerelease);
if (filtered.length === 0) {
throw new Error("没有找到正式版版本数据");
}
}
// 按发布时间排序,取最新的
const latest = filtered.sort((a, b) =>
new Date(b.published_at) - new Date(a.published_at)
)[0];
if (!latest) {
throw new Error("无法找到最新版本");
}
return {
latestVersion: latest.tag_name.replace('v', '') || null,
download_url: latest.assets?.[0]?.browser_download_url.replace('192.168.1.132:3000', '223.94.45.156:10830') ||
null,
prerelease: latest.prerelease,
published_at: latest.published_at || null,
title: latest.name || "",
description: latest.body || ""
};
} catch (error) {
console.error("获取最新版本出错:", error.message);
return null;
}
}
export function getReleases(releases, options = {}) {
const { includePrerelease = true } = options;
try {
if (!Array.isArray(releases)) {
throw new Error("参数错误releases 必须是数组");
}
if (releases.length === 0) {
throw new Error("没有可用的版本数据");
}
// 过滤掉预发布(如果不包含)
let filtered = releases;
if (!includePrerelease) {
filtered = releases.filter(r => !r.prerelease);
if (filtered.length === 0) {
throw new Error("没有找到正式版版本数据");
}
}
// 按发布时间排序
filtered.sort((a, b) =>
new Date(b.published_at) - new Date(a.published_at)
);
let renderedReleases = [];
filtered.forEach(item => {
renderedReleases.push({
version: item.tag_name.replace('v', '') || null,
download_url: item.assets?.[0]?.browser_download_url.replace('192.168.1.132:3000',
'223.94.45.156:10830') ||
null,
prerelease: item.prerelease,
published_at: getBeijingTime(new Date(item.published_at || null)) || null,
title: item.name || "",
description: item.body || ""
})
});
console.log(filtered);
console.log(renderedReleases);
return renderedReleases;
} catch (error) {
uni.showToast({
title: "获取版本列表出错",
icon: 'none'
});
console.error("获取版本列表出错:", error);
return null;
}
}