From c332d7361c3977dd92b850cfd87e4d41d8208845 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sat, 24 Jan 2026 11:56:03 +0000 Subject: [PATCH] add skip param --- scripts/generate.dart | 76 ++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/scripts/generate.dart b/scripts/generate.dart index 5f23964..e633890 100644 --- a/scripts/generate.dart +++ b/scripts/generate.dart @@ -3,7 +3,6 @@ import "package:ffigen/ffigen.dart"; import "package:path/path.dart"; void main(List args) async { - // Where we put the Gomuks repo and compiled library final buildDir = Directory.fromUri( Platform.script.resolve(join("..", "build", "gomuks")), ); @@ -11,7 +10,7 @@ void main(List args) async { final repoDir = Directory(join(buildDir.path, "source")); - bool skipBuild = false; + var skipBuild = args.contains("--skip"); final generatedSourcePath = join("src", "third_party", "gomuks.g.dart"); final generatedLibPath = Platform.script.resolve( @@ -19,9 +18,7 @@ void main(List args) async { ); final bindingsFile = File(generatedLibPath.toFilePath()); - if (await bindingsFile.exists() && - await repoDir.exists() && - !args.contains("--rebuild")) { + if (await bindingsFile.exists() && await repoDir.exists()) { final result = await Process.run("git", [ "fetch", "--dry-run", @@ -32,46 +29,43 @@ void main(List args) async { } } - if (skipBuild) { - return print( - "Gomuks build skipped: bindings and library exist and repo is up to date.", - ); - } + if (!skipBuild) { + if (await repoDir.exists()) await repoDir.delete(recursive: true); - if (await repoDir.exists()) await repoDir.delete(recursive: true); + print("Cloning Gomuks repository..."); + final cloneResult = await Process.run("git", [ + "clone", + "--branch", + "tulir/ffi", + "--depth", + "1", + "https://mau.dev/gomuks/gomuks", + repoDir.path, + ]); - print("Cloning Gomuks repository..."); - final cloneResult = await Process.run("git", [ - "clone", - "--branch", - "tulir/ffi", - "--depth", - "1", - "https://mau.dev/gomuks/gomuks", - repoDir.path, - ]); - if (cloneResult.exitCode != 0) { - throw Exception( - "Failed to clone Gomuks repository: \n${cloneResult.stderr}", - ); - } - - for (final name in ["libgomuks.so", "libgomuks.dylib", "libgomuks.dll"]) { - final libFile = File(join(buildDir.path, name)); - - print("Building Gomuks shared library $name..."); - final result = await Process.run("go", [ - "build", - "-o", - libFile.path, - "-buildmode=c-shared", - ], workingDirectory: join(repoDir.path, "pkg/ffi")); - - if (result.exitCode != 0) { + if (cloneResult.exitCode != 0) { throw Exception( - "Failed to build Gomuks shared library\n${result.stderr}", + "Failed to clone Gomuks repository: \n${cloneResult.stderr}", ); } + + for (final name in ["libgomuks.so", "libgomuks.dylib", "libgomuks.dll"]) { + final libFile = File(join(buildDir.path, name)); + + print("Building Gomuks shared library $name..."); + final result = await Process.run("go", [ + "build", + "-o", + libFile.path, + "-buildmode=c-shared", + ], workingDirectory: join(repoDir.path, "pkg/ffi")); + + if (result.exitCode != 0) { + throw Exception( + "Failed to build Gomuks shared library\n${result.stderr}", + ); + } + } } print("Generating FFI Bindings..."); @@ -82,7 +76,7 @@ void main(List args) async { ), headers: Headers( entryPoints: [File(join(buildDir.path, "libgomuks.h")).uri], - compilerOptions: ["-I${String.fromEnvironment("CPATH")}"], + // compilerOptions: ["-I${String.fromEnvironment("CPATH")}"], ), functions: Functions.includeAll, ).generate();