This commit is contained in:
lollipopkit
2023-08-07 20:02:09 +08:00
parent c1b3ff7bfd
commit 36b24bedb4
7 changed files with 55 additions and 52 deletions

View File

@@ -33,7 +33,16 @@ enum AppShellFuncType {
case AppShellFuncType.status:
return statusCmds.join(_cmdDivider);
case AppShellFuncType.docker:
return dockerCmds.join(_cmdDivider);
return '''
# If the cmd result contains "permission denied", try to use `sudo`
result=\$(docker version 2>&1)
deniedStr="permission denied"
containStr=\$(echo \$result | grep "\${deniedStr}")
if [[ \$containStr != "" ]]; then
${dockerCmds.join(_cmdDivider)}
else
${dockerCmds.map((e) => "sudo -S $e").join(_cmdDivider)}
fi''';
}
}

View File

@@ -126,7 +126,7 @@ class DockerProvider extends BusyProvider {
try {
final statsLines = statsRaw.split('\n');
statsLines.removeWhere((element) => element.isEmpty);
statsLines.removeAt(0);
if (statsLines.isNotEmpty) statsLines.removeAt(0);
for (var item in items!) {
final statsLine = statsLines.firstWhere(
(element) => element.contains(item.containerId),
@@ -148,6 +148,7 @@ class DockerProvider extends BusyProvider {
}
Future<void> _onPwd(String event, StreamSink<Uint8List> stdin) async {
print(event);
if (isRequestingPwd) return;
isRequestingPwd = true;
if (event.contains('[sudo] password for ')) {

View File

@@ -2,8 +2,8 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 426;
static const int build = 446;
static const String engine = "3.10.6";
static const String buildAt = "2023-08-06 16:29:23.492978";
static const String buildAt = "2023-08-07 18:34:12.547300";
static const int modifications = 4;
}

View File

@@ -261,10 +261,8 @@ class _DockerManagePageState extends State<DockerManagePage> {
final items = <Widget>[
_buildLoading(),
_buildVersion(),
_buildPsHeader(),
_buildPsItems(),
_buildImageHeader(),
_buildImageItems(),
_buildPs(),
_buildImage(),
_buildEditHost(),
].map((e) => RoundRectCard(e));
return ListView(
@@ -273,21 +271,18 @@ class _DockerManagePageState extends State<DockerManagePage> {
);
}
Widget _buildImageHeader() {
return ListTile(
title: Text(_s.imagesList),
subtitle: Text(
_s.dockerImagesFmt(_docker.images!.length),
style: grey,
Widget _buildImage() {
final items = <Widget>[
ListTile(
title: Text(_s.imagesList),
subtitle: Text(
_s.dockerImagesFmt(_docker.images!.length),
style: grey,
),
),
);
}
Widget _buildImageItems() {
if (_docker.images == null) {
return nil;
}
return Column(children: _docker.images!.map(_buildImageItem).toList());
];
items.addAll(_docker.images!.map(_buildImageItem));
return Column(children: items);
}
Widget _buildImageItem(DockerImage e) {
@@ -395,20 +390,17 @@ class _DockerManagePageState extends State<DockerManagePage> {
);
}
Widget _buildPsHeader() {
return ListTile(
title: Text(_s.containerStatus),
subtitle: Text(_buildPsCardSubtitle(_docker.items!), style: grey),
);
}
Widget _buildPsItems() {
if (_docker.items == null) {
return nil;
}
Widget _buildPs() {
final items = <Widget>[
ListTile(
title: Text(_s.containerStatus),
subtitle: Text(_buildPsCardSubtitle(_docker.items!), style: grey),
),
];
items.addAll(_docker.items!.map(_buildPsItem));
return Column(
mainAxisSize: MainAxisSize.min,
children: _docker.items!.map(_buildPsItem).toList(),
children: items,
);
}