luci: Show package version with release number (exclude r1)

This commit is contained in:
remittor
2025-12-18 11:30:16 +03:00
parent a616c6fa4e
commit 40084f0762
2 changed files with 26 additions and 17 deletions

View File

@@ -400,7 +400,7 @@ return view.extend({
poll.add(L.bind(this.statusPoll, this)); poll.add(L.bind(this.statusPoll, this));
let page_title = _('Zapret'); let page_title = _('Zapret');
let pkgdict = tools.decode_pkg_list(pkg_list.stdout); let pkgdict = tools.decode_pkg_list(pkg_list.stdout, false);
page_title += ' &nbsp '; page_title += ' &nbsp ';
if (pkgdict['zapret'] === undefined || pkgdict['zapret'] == '') { if (pkgdict['zapret'] === undefined || pkgdict['zapret'] == '') {
page_title += 'unknown version'; page_title += 'unknown version';

View File

@@ -181,40 +181,49 @@ return baseclass.extend({
return m ? m[2] : defval; return m ? m[2] : defval;
}, },
decode_pkg_list: function(pkg_list) { decode_pkg_list: function(pkg_list, with_suffix_r1 = true) {
let pkg_dict = { }; let pkg_dict = { };
if (!pkg_list) {
return pkg_dict;
}
let lines = pkg_list.trim().split('\n'); let lines = pkg_list.trim().split('\n');
for (let i = 0; i < lines.length; i++) { for (let i = 0; i < lines.length; i++) {
let line = lines[i].trim(); let line = lines[i].trim();
let name; let name;
let ver; let ver;
let rev = -1;
if (this.packager.name == 'apk') { if (this.packager.name == 'apk') {
let fullname = line.split(' ')[0]; let fullname = line.split(' ')[0];
let mpos = fullname.lastIndexOf("-"); let match = fullname.match(/^(.*)-r(\d+)$/);
if (mpos <= 0) if (match) {
continue; fullname = match[1];
if (fullname.substring(mpos+1, mpos+2) == 'r') { rev = parseInt(match[2], 10);
// release number
fullname = fullname.substring(0, mpos);
} }
mpos = fullname.lastIndexOf("-"); let mpos = fullname.lastIndexOf('-');
if (mpos <= 0) if (mpos <= 0)
continue; continue; // incorrect format
name = fullname.substring(0, mpos).trim(); name = fullname.slice(0, mpos).trim();
ver = fullname.substring(mpos+1).trim(); ver = fullname.slice(mpos + 1).trim();
} else { } else {
if (!line.includes(' - ')) if (!line.includes(' - '))
continue; continue; // incorrect format
name = line.split(' - ')[0].trim(); name = line.split(' - ')[0].trim();
ver = line.split(' - ')[1].trim(); ver = line.split(' - ')[1].trim();
let spos = ver.indexOf(" "); let spos = ver.indexOf(" ");
if (spos > 0) { if (spos > 0) {
ver = ver.substring(0, spos); ver = ver.substring(0, spos);
} }
let mpos = ver.lastIndexOf("-"); let match = ver.match(/^(.*)-r(\d+)$/);
if (mpos > 0 && ver.substring(mpos+1, mpos+2) == 'r') { if (match) {
// release number ver = match[1];
ver = ver.substring(0, mpos); rev = parseInt(match[2], 10);
}
}
if (rev >= 0) {
if (rev == 1 && !with_suffix_r1) {
// nothing
} else {
ver += '-r' + rev;
} }
} }
pkg_dict[name] = ver; pkg_dict[name] = ver;