mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
90 lines
2.2 KiB
Dart
90 lines
2.2 KiB
Dart
import 'package:toolbox/data/model/pkg/manager.dart';
|
|
|
|
class UpgradePkgInfo {
|
|
final PkgManager? _mgr;
|
|
|
|
late String package;
|
|
late String nowVersion;
|
|
late String newVersion;
|
|
late String arch;
|
|
|
|
UpgradePkgInfo(String raw, this._mgr) {
|
|
switch (_mgr) {
|
|
case PkgManager.apt:
|
|
_parseApt(raw);
|
|
break;
|
|
case PkgManager.yum:
|
|
_parseYum(raw);
|
|
break;
|
|
case PkgManager.zypper:
|
|
_parseZypper(raw);
|
|
break;
|
|
case PkgManager.pacman:
|
|
_parsePacman(raw);
|
|
break;
|
|
case PkgManager.opkg:
|
|
_parseOpkg(raw);
|
|
break;
|
|
case PkgManager.apk:
|
|
_parseApk(raw);
|
|
break;
|
|
default:
|
|
throw Exception('Unsupported pkg type: $_mgr');
|
|
}
|
|
}
|
|
|
|
void _parseApt(String raw) {
|
|
final split1 = raw.split("/");
|
|
package = split1[0];
|
|
final split2 = split1[1].split(" ");
|
|
newVersion = split2[1];
|
|
arch = split2[2];
|
|
nowVersion = split2[5].replaceFirst(']', '');
|
|
}
|
|
|
|
void _parseYum(String raw) {
|
|
final result = RegExp(r'\S+').allMatches(raw);
|
|
final pkgAndArch = result.elementAt(0).group(0) ?? '.';
|
|
final split1 = pkgAndArch.split('.');
|
|
package = split1[0];
|
|
arch = split1[1];
|
|
newVersion = result.elementAt(1).group(0) ?? 'Unknown';
|
|
nowVersion = '';
|
|
}
|
|
|
|
void _parseZypper(String raw) {
|
|
final cols = raw.split("|");
|
|
package = cols[2].trim();
|
|
nowVersion = cols[3].trim();
|
|
newVersion = cols[4].trim();
|
|
arch = cols[5].trim();
|
|
}
|
|
|
|
void _parsePacman(String raw) {
|
|
final parts = raw.split(' ');
|
|
package = parts[0];
|
|
nowVersion = parts[1];
|
|
newVersion = parts[3];
|
|
arch = '';
|
|
}
|
|
|
|
void _parseOpkg(String raw) {
|
|
final parts = raw.split(' - ');
|
|
package = parts[0];
|
|
nowVersion = parts[1];
|
|
newVersion = parts[2];
|
|
arch = '';
|
|
}
|
|
|
|
// libcrypto3-3.0.8-r4 x86_64 {openssl} (Apache-2.0) [upgradable from: libcrypto3-3.0.8-r3]
|
|
void _parseApk(String raw) {
|
|
final parts = raw.split(' ');
|
|
final len = parts.length;
|
|
newVersion = parts[len - 1];
|
|
nowVersion = parts[0];
|
|
newVersion = newVersion.substring(0, newVersion.length - 1);
|
|
package = nowVersion;
|
|
arch = parts[1];
|
|
}
|
|
}
|