update:输出软件包大小

This commit is contained in:
momen 2025-05-28 21:05:04 +08:00
parent 65172300be
commit 17b5c9afce
3 changed files with 41 additions and 8 deletions

View File

@ -22,15 +22,46 @@ QStringList aptssUpdater::getUpdateablePackages()
while (!stream.atEnd()) {
QString line = stream.readLine();
QRegularExpression regex(R"((\S+)/\S+\s+\S+\s+\S+\s+\[(.+)\])");
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);
QString currentVersion = match.captured(2);
QString updateVersion = match.captured(3);
packageDetails << QString("%1 (%2 -> %3)").arg(packageName, currentVersion, updateVersion);
}
}
return packageDetails;
}
QStringList aptssUpdater::getPackageSizes()
{
QStringList packageSizes;
QProcess process;
process.start("bash", QStringList() << "-c" << "aptss upgrade --assume-no");
// 自动回复 "n" 以跳过交互式提示
if (process.waitForStarted()) {
process.write("n\n");
}
process.waitForFinished();
QString output = process.readAllStandardOutput();
QTextStream stream(&output);
while (!stream.atEnd()) {
QString line = stream.readLine();
QRegularExpression regex(R"((\S+)\s+\S+\s+(\d+(?:\.\d+)?(?:KiB|MiB)))");
QRegularExpressionMatch match = regex.match(line);
if (match.hasMatch()) {
QString packageName = match.captured(1);
QString packageSize = match.captured(2);
packageSizes << QString("%1: %2").arg(packageName, packageSize);
}
}
return packageSizes;
}

View File

@ -12,7 +12,7 @@ public:
QStringList getUpdateablePackages(); // 查询可更新包列表及更新内容
qint64 getTotalDownloadSize(); // 获取更新总大小预估
QStringList getPackageSizes(); // 获取每个包的大小
signals:
};

View File

@ -14,12 +14,14 @@ void MainWindow::checkUpdates()
// 获取可更新包列表
QStringList updateablePackages = updater.getUpdateablePackages();
QStringList packageSizes = updater.getPackageSizes();
qDebug() << "可更新包列表:";
for (const QString &package : updateablePackages) {
qDebug() << package;
for (int i = 0; i < updateablePackages.size(); ++i) {
QString packageInfo = updateablePackages.at(i);
QString packageSize = (i < packageSizes.size()) ? packageSizes.at(i) : "未知大小";
qDebug() << QString("%1 (%2)").arg(packageInfo, packageSize);
}
}
MainWindow::~MainWindow()