#50 new: docker shell

This commit is contained in:
lollipopkit
2023-05-27 14:24:54 +08:00
parent 7a211b9a55
commit a8194319b6
13 changed files with 59 additions and 20 deletions

View File

@@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/navigator.dart';
import 'package:toolbox/core/route.dart';
import 'package:toolbox/core/utils/misc.dart';
import 'package:toolbox/view/page/ssh.dart';
import 'package:toolbox/view/widget/input_field.dart';
import '../../core/utils/ui.dart';
@@ -499,6 +501,9 @@ class _DockerManagePageState extends State<DockerManagePage> {
case DockerMenuType.stop:
_docker.stop(dItem.containerId);
break;
case DockerMenuType.restart:
_docker.restart(dItem.containerId);
break;
case DockerMenuType.logs:
final logs = await _docker.logs(dItem.containerId);
showRoundDialog(
@@ -514,9 +519,14 @@ class _DockerManagePageState extends State<DockerManagePage> {
],
);
break;
case DockerMenuType.restart:
_docker.restart(dItem.containerId);
break;
case DockerMenuType.terminal:
AppRoute(
SSHPage(
spi: widget.spi,
initCmd: 'docker exec -it ${dItem.containerId} /bin/sh',
),
'Docker terminal',
).go(context);
}
},
);

View File

@@ -25,7 +25,8 @@ import '../../locator.dart';
class SSHPage extends StatefulWidget {
final ServerPrivateInfo spi;
const SSHPage({Key? key, required this.spi}) : super(key: key);
final String? initCmd;
const SSHPage({Key? key, required this.spi, this.initCmd}) : super(key: key);
@override
_SSHPageState createState() => _SSHPageState();
@@ -341,6 +342,11 @@ class _SSHPageState extends State<SSHPage> {
_listen(session.stdout);
_listen(session.stderr);
if (widget.initCmd != null) {
_terminal.write(widget.initCmd!);
_terminal.keyInput(TerminalKey.enter);
}
await session.done;
if (mounted) {
context.pop();