opt. for docker & apt

This commit is contained in:
lollipopkit
2022-12-10 23:14:55 +08:00
parent 62a1122174
commit 611518f790
22 changed files with 686 additions and 213 deletions

View File

@@ -0,0 +1,35 @@
import 'dart:async';
import 'package:dartssh2/dartssh2.dart';
import 'package:flutter/foundation.dart';
import 'package:toolbox/core/extension/uint8list.dart';
typedef OnStd = void Function(String data, StreamSink<Uint8List> sink);
typedef OnStdin = void Function(StreamSink<Uint8List> sink);
typedef PwdRequestFunc = Future<String> Function();
final pwdRequestWithUserReg = RegExp(r'\[sudo\] password for (.+):');
extension SSHClientX on SSHClient {
Future<int?> exec(String cmd,
{OnStd? onStderr, OnStd? onStdout, OnStdin? stdin}) async {
final session = await execute(cmd);
if (onStderr != null) {
await for (final data in session.stderr) {
onStderr(data.string, session.stdin);
}
}
if (onStdout != null) {
await for (final data in session.stdout) {
onStdout(data.string, session.stdin);
}
}
if (stdin != null) {
stdin(session.stdin);
}
session.close();
return session.exitCode;
}
}

View File

@@ -1,3 +1,6 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:toolbox/data/model/distribution.dart';
@@ -60,4 +63,6 @@ extension StringX on String {
}
String get withLangExport => 'export LANG=en_US.UTF-8 && $this';
Uint8List get uint8List => Uint8List.fromList(utf8.encode(this));
}