runScript function
Run a given input string in console in native code via dart ffi
Implementation
Future<int> runScript(String script) async {
final resolvedPackageUri = await Isolate.resolvePackageUri(
Uri.parse(packageUri),
);
if (resolvedPackageUri == null) {
throw MerryError(
type: ErrorCode.invalidPackageUri,
body: {'packageUri': packageUri},
);
}
final objectFilePath = resolvedPackageUri.resolve(path.join(blobsPath, getBlobFilename())).toFilePath();
late ffi.DynamicLibrary dylib;
try {
dylib = ffi.DynamicLibrary.open(objectFilePath);
} catch (e) {
throw MerryError(
type: ErrorCode.invalidBlob,
body: {'path': objectFilePath, 'origin': e},
);
}
final nativeRunScriptFn = dylib
.lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<Utf8>)>>(
'run_script',
)
.asFunction<int Function(ffi.Pointer<Utf8>)>();
return nativeRunScriptFn(script.toNativeUtf8());
}