mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
pkg mgr support zypper pacman opkg
This commit is contained in:
@@ -1,30 +1,37 @@
|
||||
import 'package:toolbox/data/model/server/dist.dart';
|
||||
import 'package:toolbox/data/model/pkg/manager.dart';
|
||||
|
||||
class UpgradePkgInfo {
|
||||
final String _raw;
|
||||
final Dist _dist;
|
||||
final PkgManager? _mgr;
|
||||
|
||||
late String package;
|
||||
late String nowVersion;
|
||||
late String newVersion;
|
||||
late String arch;
|
||||
|
||||
UpgradePkgInfo(this._raw, this._dist) {
|
||||
switch (_dist) {
|
||||
case Dist.debian:
|
||||
case Dist.ubuntu:
|
||||
_parseApt();
|
||||
UpgradePkgInfo(String raw, this._mgr) {
|
||||
switch (_mgr) {
|
||||
case PkgManager.apt:
|
||||
_parseApt(raw);
|
||||
break;
|
||||
case Dist.centos:
|
||||
_parseYum();
|
||||
case PkgManager.yum:
|
||||
_parseYum(raw);
|
||||
break;
|
||||
case PkgManager.zypper:
|
||||
_parseZypper(raw);
|
||||
break;
|
||||
case PkgManager.pacman:
|
||||
_parsePacman(raw);
|
||||
break;
|
||||
case PkgManager.opkg:
|
||||
_parseOpkg(raw);
|
||||
break;
|
||||
default:
|
||||
throw Exception('Unsupported dist: $_dist');
|
||||
throw Exception('Unsupported pkg type: $_mgr');
|
||||
}
|
||||
}
|
||||
|
||||
void _parseApt() {
|
||||
final split1 = _raw.split("/");
|
||||
void _parseApt(String raw) {
|
||||
final split1 = raw.split("/");
|
||||
package = split1[0];
|
||||
final split2 = split1[1].split(" ");
|
||||
newVersion = split2[1];
|
||||
@@ -32,8 +39,8 @@ class UpgradePkgInfo {
|
||||
nowVersion = split2[5].replaceFirst(']', '');
|
||||
}
|
||||
|
||||
void _parseYum() {
|
||||
final result = RegExp(r'\S+').allMatches(_raw);
|
||||
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];
|
||||
@@ -41,4 +48,28 @@ class UpgradePkgInfo {
|
||||
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 = '';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user