fix: docker container status (#374)

This commit is contained in:
lollipopkit
2024-06-05 21:58:19 +08:00
parent 40ce37d230
commit 97267cdfbf
7 changed files with 43 additions and 34 deletions

View File

@@ -3,8 +3,9 @@ import 'dart:convert';
import 'package:fl_lib/fl_lib.dart';
import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/data/model/container/type.dart';
import 'package:toolbox/data/res/misc.dart';
abstract final class ContainerPs {
sealed class ContainerPs {
final String? id = null;
final String? image = null;
String? get name;
@@ -140,7 +141,11 @@ final class DockerPs implements ContainerPs {
String? get cmd => null;
@override
bool get running => state?.contains('Up ') ?? false;
bool get running {
if (state?.contains('Exited') == true) return false;
if (state?.contains('Up') == true) return true;
return true;
}
@override
void parseStats(String s) {
@@ -154,12 +159,12 @@ final class DockerPs implements ContainerPs {
/// CONTAINER ID NAMES IMAGE STATUS
/// a049d689e7a1 aria2-pro p3terx/aria2-pro Up 3 weeks
factory DockerPs.parse(String raw) {
final parts = raw.split(RegExp(r'\s{2,}'));
final parts = raw.split(Miscs.multiBlankreg);
return DockerPs(
id: parts[0],
names: parts[1],
image: parts[2],
state: parts[3],
state: parts[3].trim(),
);
}
}

View File

@@ -277,8 +277,8 @@ enum ContainerCmdType {
ContainerCmdType.version => '$prefix version $_jsonFmt',
ContainerCmdType.ps => switch (type) {
/// Use [_jsonFmt] in Docker will cause the operation to slow down.
ContainerType.docker => '$prefix ps -a --format "table '
'{{printf \\"${"%-30.30s " * 4}\\" .ID .Names .Image .Status}}"',
ContainerType.docker => '$prefix ps -a --format "table {{printf \\"'
'%-15.15s ${"%-30.30s " * 3}\\" .ID .Names .Image .Status}}"',
ContainerType.podman => '$prefix ps -a $_jsonFmt',
},
ContainerCmdType.stats =>

View File

@@ -2,9 +2,9 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 932;
static const int build = 934;
static const String engine = "3.22.1";
static const String buildAt = "2024-06-05 18:16:59";
static const int modifications = 2;
static const String buildAt = "2024-06-05 19:20:48";
static const int modifications = 6;
static const int script = 48;
}

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
abstract final class Miscs {
static final blankReg = RegExp(r'\s+');
static final multiBlankreg = RegExp(r'\s{2,}');
/// RegExp for password request
static final pwdRequestWithUserReg = RegExp(r'\[sudo\] password for (.+):');