default: mac window size & opt.: snippet result
This commit is contained in:
@@ -7,15 +7,15 @@ enum ServerTabMenuType {
|
||||
docker,
|
||||
process,
|
||||
pkg,
|
||||
snippet,
|
||||
//snippet,
|
||||
;
|
||||
|
||||
IconData get icon {
|
||||
switch (this) {
|
||||
case ServerTabMenuType.sftp:
|
||||
return Icons.insert_drive_file;
|
||||
case ServerTabMenuType.snippet:
|
||||
return Icons.code;
|
||||
//case ServerTabMenuType.snippet:
|
||||
//return Icons.code;
|
||||
case ServerTabMenuType.pkg:
|
||||
return Icons.system_security_update;
|
||||
case ServerTabMenuType.docker:
|
||||
@@ -31,8 +31,8 @@ enum ServerTabMenuType {
|
||||
switch (this) {
|
||||
case ServerTabMenuType.sftp:
|
||||
return 'SFTP';
|
||||
case ServerTabMenuType.snippet:
|
||||
return l10n.snippet;
|
||||
//case ServerTabMenuType.snippet:
|
||||
//return l10n.snippet;
|
||||
case ServerTabMenuType.pkg:
|
||||
return l10n.pkg;
|
||||
case ServerTabMenuType.docker:
|
||||
|
||||
@@ -3,6 +3,7 @@ import '../server/system.dart';
|
||||
|
||||
const seperator = 'SrvBoxSep';
|
||||
|
||||
/// The suffix `\t` is for formatting
|
||||
const _cmdDivider = '\necho $seperator\n\t';
|
||||
|
||||
const _serverBoxDir = r'$HOME/.config/server_box';
|
||||
|
||||
@@ -45,3 +45,15 @@ class Snippet implements TagPickable {
|
||||
@override
|
||||
String get tagName => name;
|
||||
}
|
||||
|
||||
class SnippetResult {
|
||||
final String? dest;
|
||||
final String result;
|
||||
final Duration time;
|
||||
|
||||
SnippetResult({
|
||||
required this.dest,
|
||||
required this.result,
|
||||
required this.time,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -362,18 +362,26 @@ class ServerProvider extends ChangeNotifier {
|
||||
_limiter.reset(sid);
|
||||
}
|
||||
|
||||
Future<String?> runSnippets(String id, List<Snippet> snippets) async {
|
||||
Future<SnippetResult?> runSnippets(String id, Snippet snippet) async {
|
||||
final client = _servers[id]?.client;
|
||||
if (client == null) {
|
||||
return null;
|
||||
}
|
||||
return await client.run(snippets.map((e) => e.script).join('&&')).string;
|
||||
final watch = Stopwatch()..start();
|
||||
final result = await client.run(snippet.script).string;
|
||||
final time = watch.elapsed;
|
||||
watch.stop();
|
||||
return SnippetResult(
|
||||
dest: _servers[id]?.spi.name,
|
||||
result: result,
|
||||
time: time,
|
||||
);
|
||||
}
|
||||
|
||||
Future<List<String?>> runSnippetsMulti(
|
||||
Future<List<SnippetResult?>> runSnippetsMulti(
|
||||
List<String> ids,
|
||||
List<Snippet> snippets,
|
||||
Snippet snippet,
|
||||
) async {
|
||||
return await Future.wait(ids.map((id) async => runSnippets(id, snippets)));
|
||||
return await Future.wait(ids.map((id) async => runSnippets(id, snippet)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,5 +38,6 @@ class GithubIds {
|
||||
'a1564471347',
|
||||
'fanzhebufan1',
|
||||
'wcbing',
|
||||
'balh55y',
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user