fix: use proper api url

no need to parse all tags since https://api.github.com/repos/NodeBB/NodeBB/releases/latest gives the latest non-prerelease, non-draft releases
v1.18.x
Barış Soner Uşaklı 4 years ago
parent 8eb62e2210
commit 264818e517

@ -1,6 +1,5 @@
'use strict'; 'use strict';
const semver = require('semver');
const request = require('request'); const request = require('request');
const meta = require('../meta'); const meta = require('../meta');
@ -10,7 +9,7 @@ let versionCacheLastModified = '';
const isPrerelease = /^v?\d+\.\d+\.\d+-.+$/; const isPrerelease = /^v?\d+\.\d+\.\d+-.+$/;
function getLatestRelease(page, callback) { function getLatestVersion(callback) {
const headers = { const headers = {
Accept: 'application/vnd.github.v3+json', Accept: 'application/vnd.github.v3+json',
'User-Agent': encodeURIComponent('NodeBB Admin Control Panel/' + meta.config.title), 'User-Agent': encodeURIComponent('NodeBB Admin Control Panel/' + meta.config.title),
@ -19,11 +18,12 @@ function getLatestRelease(page, callback) {
if (versionCacheLastModified) { if (versionCacheLastModified) {
headers['If-Modified-Since'] = versionCacheLastModified; headers['If-Modified-Since'] = versionCacheLastModified;
} }
request('https://api.github.com/repos/NodeBB/NodeBB/tags?page=' + page, {
request('https://api.github.com/repos/NodeBB/NodeBB/releases/latest', {
json: true, json: true,
headers: headers, headers: headers,
timeout: 1000, timeout: 2000,
}, function (err, res, releases) { }, function (err, res, latestRelease) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
@ -36,28 +36,16 @@ function getLatestRelease(page, callback) {
return callback(new Error(res.statusMessage)); return callback(new Error(res.statusMessage));
} }
releases = releases.filter(function (version) { if (!latestRelease || !latestRelease.tag_name) {
return !isPrerelease.test(version.name); // filter out automated prerelease versions return callback(new Error('[[error:cant-get-latest-release]]'));
}).map(function (version) {
return version.name.replace(/^v/, '');
}).sort(function (a, b) {
return semver.lt(a, b) ? 1 : -1;
});
if (!releases.length) {
return getLatestRelease(page + 1, callback);
} }
versionCache = releases[0]; const tagName = latestRelease.tag_name.replace(/^v/, '');
versionCache = tagName;
versionCacheLastModified = res.headers['last-modified']; versionCacheLastModified = res.headers['last-modified'];
callback(null, versionCache); callback(null, versionCache);
}); });
} }
function getLatestVersion(callback) {
getLatestRelease(1, callback);
}
exports.getLatestVersion = getLatestVersion; exports.getLatestVersion = getLatestVersion;
exports.isPrerelease = isPrerelease; exports.isPrerelease = isPrerelease;

Loading…
Cancel
Save