update:更新终端调用aptss命令展示可更新列表

This commit is contained in:
momen 2025-05-28 20:40:40 +08:00
parent b8846eb9b6
commit 65172300be
5 changed files with 72 additions and 1 deletions

View File

@ -23,6 +23,7 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(Spark-Update-Tool
MANUAL_FINALIZATION
${PROJECT_SOURCES}
aptssupdater.h aptssupdater.cpp
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET Spark-Update-Tool APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR

36
src/aptssupdater.cpp Normal file
View File

@ -0,0 +1,36 @@
#include "aptssupdater.h"
#include <QProcess>
#include <QTextStream>
#include <QRegularExpression>
aptssUpdater::aptssUpdater(QWidget *parent)
: QWidget(parent)
{
}
QStringList aptssUpdater::getUpdateablePackages()
{
QStringList packageDetails;
QProcess process;
process.start("bash", QStringList() << "-c" << "aptss list --upgradable");
process.waitForFinished();
QString output = process.readAllStandardOutput();
QTextStream stream(&output);
// 跳过第一行(提示信息)
stream.readLine();
while (!stream.atEnd()) {
QString line = stream.readLine();
QRegularExpression regex(R"((\S+)/\S+\s+\S+\s+\S+\s+\[(.+)\])");
QRegularExpressionMatch match = regex.match(line);
if (match.hasMatch()) {
QString packageName = match.captured(1);
QString updateDetails = match.captured(2);
packageDetails << QString("%1: %2").arg(packageName, updateDetails);
}
}
return packageDetails;
}

19
src/aptssupdater.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef APTSSUPDATER_H
#define APTSSUPDATER_H
#include <QWidget>
#include <QStringList>
class aptssUpdater : public QWidget
{
Q_OBJECT
public:
explicit aptssUpdater(QWidget *parent = nullptr);
QStringList getUpdateablePackages(); // 查询可更新包列表及更新内容
qint64 getTotalDownloadSize(); // 获取更新总大小预估
signals:
};
#endif // APTSSUPDATER_H

View File

@ -5,8 +5,22 @@ MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
checkUpdates();
ui->setupUi(this);
}
void MainWindow::checkUpdates()
{
aptssUpdater updater;
// 获取可更新包列表
QStringList updateablePackages = updater.getUpdateablePackages();
qDebug() << "可更新包列表:";
for (const QString &package : updateablePackages) {
qDebug() << package;
}
}
MainWindow::~MainWindow()
{

View File

@ -2,7 +2,7 @@
#define MAINWINDOW_H
#include <QMainWindow>
#include "aptssupdater.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
@ -19,5 +19,6 @@ public:
private:
Ui::MainWindow *ui;
void checkUpdates();
};
#endif // MAINWINDOW_H