execute function

Future<int> execute(
  1. String command
)

Implementation

Future<int> execute(String command) async {
  const rootLibrary = 'package:koli/koli.dart';
  final uri = await Isolate.resolvePackageUri(Uri.parse(rootLibrary));
  if (uri == null) {
    exit(1);
  }

  final root = path.fromUri(uri.resolve('native').path);
  // Open the dynamic library
  late String libraryPath;
  if (Platform.isMacOS) {
    libraryPath = path.join(root, 'libkoli.dylib');
  } else if (Platform.isWindows) {
    libraryPath = path.join(root, 'koli.dll');
  } else {
    libraryPath = path.join(root, 'libkoli.so');
  }

  final dylib = DynamicLibrary.open(libraryPath);
  final execute = dylib.lookupFunction<ExecuteNative, Execute>('execute');

  final code = execute(command.toNativeUtf8());

  return code;
}