new: podman

This commit is contained in:
lollipopkit
2024-01-21 15:12:43 +08:00
parent 7156f08eb8
commit 50bcabbc54
36 changed files with 1097 additions and 795 deletions

View File

@@ -20,7 +20,7 @@ class Backup {
final List<ServerPrivateInfo> spis;
final List<Snippet> snippets;
final List<PrivateKeyInfo> keys;
final Map<String, dynamic> dockerHosts;
final Map<String, dynamic> container;
final Map<String, dynamic> settings;
final Map<String, dynamic> history;
final int? lastModTime;
@@ -31,7 +31,7 @@ class Backup {
required this.spis,
required this.snippets,
required this.keys,
required this.dockerHosts,
required this.container,
required this.settings,
required this.history,
this.lastModTime,
@@ -48,7 +48,7 @@ class Backup {
keys = (json['keys'] as List)
.map((e) => PrivateKeyInfo.fromJson(e))
.toList(),
dockerHosts = json['dockerHosts'] ?? {},
container = json['container'] ?? {},
settings = json['settings'] ?? {},
lastModTime = json['lastModTime'],
history = json['history'] ?? {};
@@ -59,7 +59,7 @@ class Backup {
'spis': spis,
'snippets': snippets,
'keys': keys,
'dockerHosts': dockerHosts,
'container': container,
'settings': settings,
'lastModTime': lastModTime,
'history': history,
@@ -71,7 +71,7 @@ class Backup {
spis = Stores.server.fetch(),
snippets = Stores.snippet.fetch(),
keys = Stores.key.fetch(),
dockerHosts = Stores.docker.box.toJson(),
container = Stores.docker.box.toJson(),
settings = Stores.setting.box.toJson(),
lastModTime = Stores.lastModTime,
history = Stores.history.box.toJson();
@@ -110,8 +110,8 @@ class Backup {
for (final s in history.keys) {
Stores.history.box.put(s, history[s]);
}
for (final k in dockerHosts.keys) {
final val = dockerHosts[k];
for (final k in container.keys) {
final val = container[k];
if (val != null && val is String && val.isNotEmpty) {
Stores.docker.put(k, val);
}

View File

@@ -33,7 +33,7 @@ class SSHErr extends Err<SSHErrType> {
}
}
enum DockerErrType {
enum ContainerErrType {
unknown,
noClient,
notInstalled,
@@ -45,12 +45,12 @@ enum DockerErrType {
parseStats,
}
class DockerErr extends Err<DockerErrType> {
DockerErr({required super.type, super.message}) : super(from: ErrFrom.docker);
class ContainerErr extends Err<ContainerErrType> {
ContainerErr({required super.type, super.message}) : super(from: ErrFrom.docker);
@override
String toString() {
return 'DockerErr<$type>: $message';
return 'ContainerErr<$type>: $message';
}
}

View File

@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:toolbox/core/extension/context/locale.dart';
enum ServerTabMenuType {
enum ServerTabMenu {
terminal,
sftp,
docker,
container,
process,
pkg,
//snippet,
@@ -12,40 +12,40 @@ enum ServerTabMenuType {
IconData get icon {
switch (this) {
case ServerTabMenuType.sftp:
case ServerTabMenu.sftp:
return Icons.insert_drive_file;
//case ServerTabMenuType.snippet:
//return Icons.code;
case ServerTabMenuType.pkg:
case ServerTabMenu.pkg:
return Icons.system_security_update;
case ServerTabMenuType.docker:
case ServerTabMenu.container:
return Icons.view_agenda;
case ServerTabMenuType.process:
case ServerTabMenu.process:
return Icons.list_alt_outlined;
case ServerTabMenuType.terminal:
case ServerTabMenu.terminal:
return Icons.terminal;
}
}
String get toStr {
switch (this) {
case ServerTabMenuType.sftp:
case ServerTabMenu.sftp:
return 'SFTP';
//case ServerTabMenuType.snippet:
//return l10n.snippet;
case ServerTabMenuType.pkg:
case ServerTabMenu.pkg:
return l10n.pkg;
case ServerTabMenuType.docker:
return 'Docker';
case ServerTabMenuType.process:
case ServerTabMenu.container:
return l10n.container;
case ServerTabMenu.process:
return l10n.process;
case ServerTabMenuType.terminal:
case ServerTabMenu.terminal:
return l10n.terminal;
}
}
}
enum DockerMenuType {
enum ContainerMenu {
start,
stop,
restart,
@@ -55,7 +55,7 @@ enum DockerMenuType {
//stats,
;
static List<DockerMenuType> items(bool running) {
static List<ContainerMenu> items(bool running) {
if (running) {
return [
stop,
@@ -72,17 +72,17 @@ enum DockerMenuType {
IconData get icon {
switch (this) {
case DockerMenuType.start:
case ContainerMenu.start:
return Icons.play_arrow;
case DockerMenuType.stop:
case ContainerMenu.stop:
return Icons.stop;
case DockerMenuType.restart:
case ContainerMenu.restart:
return Icons.restart_alt;
case DockerMenuType.rm:
case ContainerMenu.rm:
return Icons.delete;
case DockerMenuType.logs:
case ContainerMenu.logs:
return Icons.logo_dev;
case DockerMenuType.terminal:
case ContainerMenu.terminal:
return Icons.terminal;
// case DockerMenuType.stats:
// return Icons.bar_chart;
@@ -91,24 +91,24 @@ enum DockerMenuType {
String get toStr {
switch (this) {
case DockerMenuType.start:
case ContainerMenu.start:
return l10n.start;
case DockerMenuType.stop:
case ContainerMenu.stop:
return l10n.stop;
case DockerMenuType.restart:
case ContainerMenu.restart:
return l10n.restart;
case DockerMenuType.rm:
case ContainerMenu.rm:
return l10n.delete;
case DockerMenuType.logs:
case ContainerMenu.logs:
return l10n.log;
case DockerMenuType.terminal:
case ContainerMenu.terminal:
return l10n.terminal;
// case DockerMenuType.stats:
// return s.stats;
}
}
PopupMenuItem<DockerMenuType> get widget => _build(this, icon, toStr);
PopupMenuItem<ContainerMenu> get widget => _build(this, icon, toStr);
}
PopupMenuItem<T> _build<T>(T t, IconData icon, String text) {

View File

@@ -224,30 +224,6 @@ const _statusCmds = [
'nvidia-smi -q -x',
];
enum DockerCmdType {
version,
ps,
//stats,
images,
;
String get exec {
switch (this) {
case DockerCmdType.version:
return 'docker version';
case DockerCmdType.ps:
return 'docker ps -a';
// case DockerCmdType.stats:
// return 'docker stats --no-stream';
case DockerCmdType.images:
return 'docker image ls';
}
}
static final execAll =
values.map((e) => e.exec).join(' && echo $seperator && ');
}
enum BSDStatusCmdType {
echo,
time,