mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 23:34:24 +01:00
fix: docker container status (#374)
This commit is contained in:
@@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 =>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 (.+):');
|
||||
|
||||
Reference in New Issue
Block a user