script method
Future
script(
- String script, {
- List<String>? arguments,
- Encoding? encoding,
- String? workingDirectory,
- Map<String, String>? environment,
- bool includeParentEnvironment = true,
- bool silent = false,
- bool noPrompt = false,
- bool returnCode = false,
})
Implementation
Future<dynamic> script(
String script, {
List<String>? arguments,
dart_convert.Encoding? encoding,
String? workingDirectory,
Map<String, String>? environment,
bool includeParentEnvironment = true,
bool silent = false,
bool noPrompt = false,
bool returnCode = false,
}) async {
if (!script.endsWith('\n')) {
script += '\n';
}
arguments ??= [];
if (workingDirectory != null) {
workingDirectory = std_misc.pathExpand(workingDirectory);
}
workingDirectory ??= dart_io.Directory.current.absolute.path;
if (!noPrompt) {
//print('[$workingDirectory]\n<script>\n$script</script>');
dart_io.stderr.write('[$workingDirectory]\n<script>\n$script</script>\n');
}
String? tmpFile;
String command;
if (useUnixShell) {
String b64 = dart_convert.base64.encode(dart_convert.utf8.encode(script));
command = 'echo $b64 | base64 -d | bash /dev/stdin';
for (int i = 0; i < arguments.length; i++) {
command += ' "${arguments[i]}"';
}
} else {
tmpFile = std_misc.installBinaryToTempDir(
Uint8List.fromList(
dart_io.SystemEncoding().encode(
dart_io.Platform.isWindows
? script.replaceAll('\n', '\r\n')
: script,
),
),
suffix: '.cmd',
);
command = '"$tmpFile"';
for (int i = 0; i < arguments.length; i++) {
command += ' "${arguments[i]}"';
}
}
//print(command);
dynamic result;
try {
result = await run(
command,
encoding: encoding,
workingDirectory: workingDirectory,
environment: environment,
includeParentEnvironment: includeParentEnvironment,
silent: silent,
noPrompt: true,
returnCode: returnCode,
);
} finally {
if (tmpFile != null) {
dart_io.File(tmpFile).deleteSync();
}
}
return result;
}