初始化仓库
This commit is contained in:
109
utils/parseRelease.js
Normal file
109
utils/parseRelease.js
Normal file
@@ -0,0 +1,109 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user