mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-14 21:02:04 +08:00
feat:获取包大小
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <QTextStream>
|
||||
#include <QRegularExpression>
|
||||
#include <QFile>
|
||||
#include <qdebug.h>
|
||||
|
||||
aptssUpdater::aptssUpdater(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
@@ -66,9 +67,55 @@ QStringList aptssUpdater::getUpdateablePackages()
|
||||
|
||||
QStringList aptssUpdater::getPackageSizes()
|
||||
{
|
||||
QStringList packageSizes;
|
||||
QProcess process;
|
||||
|
||||
// 使用绝对路径 + 自动输入N跳过交互
|
||||
QString command = R"(echo N | /opt/durapps/spark-store/bin/aptss upgrade --assume-no)";
|
||||
|
||||
process.start("bash", QStringList() << "-c" << command);
|
||||
if (!process.waitForFinished()) {
|
||||
qWarning() << "获取包大小失败:进程未完成";
|
||||
return packageSizes;
|
||||
}
|
||||
|
||||
QString output = process.readAllStandardOutput() + process.readAllStandardError();
|
||||
|
||||
// 清理颜色控制字符(ANSI 转义序列)
|
||||
output.remove(QRegularExpression(R"(\x1B\[[0-9;]*[a-zA-Z])")); // \x1B is ESC
|
||||
|
||||
QStringList lines = output.split('\n', Qt::SkipEmptyParts);
|
||||
|
||||
// 从 getUpdateablePackages 获取包名
|
||||
QStringList updateablePackages;
|
||||
for (const QString &pkgInfo : getUpdateablePackages()) {
|
||||
QString pkgName = pkgInfo.section(":", 0, 0).trimmed();
|
||||
updateablePackages << pkgName;
|
||||
}
|
||||
|
||||
// 匹配 [apt-fast xx:xx:xx] 行,提取内容
|
||||
QRegularExpression sizeLineRegex(R"(\[apt-fast [^\]]+\](\S+)\s+\S+\s+(\d+(\.\d+)?[KMG]?iB))");
|
||||
|
||||
for (const QString &line : lines) {
|
||||
QRegularExpressionMatch match = sizeLineRegex.match(line.trimmed());
|
||||
if (match.hasMatch()) {
|
||||
QString name = match.captured(1);
|
||||
QString size = match.captured(2);
|
||||
|
||||
if (updateablePackages.contains(name)) {
|
||||
packageSizes << QString("%1: %2").arg(name, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "包大小列表:" << packageSizes;
|
||||
return packageSizes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QStringList aptssUpdater::getDesktopAppNames()
|
||||
{
|
||||
QStringList appNames;
|
||||
|
||||
@@ -106,6 +106,7 @@ void MainWindow::checkUpdates()
|
||||
// 获取可更新包列表
|
||||
// QStringList updateablePackages = updater.getUpdateablePackages();
|
||||
QStringList appName = updater.getDesktopAppNames();
|
||||
updater.getPackageSizes();
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user