From bfb30a1311702d324849b1e3943930dd1cc0691c Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:58:07 +0100 Subject: [PATCH 01/17] feat: reafctor function --- .gitignore | 1 + jsr/scripts/convert_binary_to_json.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 jsr/scripts/convert_binary_to_json.ts diff --git a/.gitignore b/.gitignore index 63c68c9..05ff4e0 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ compile_commands.json # Generated files generated/ src/version_config.cpp +*.so # OS .DS_Store diff --git a/jsr/scripts/convert_binary_to_json.ts b/jsr/scripts/convert_binary_to_json.ts new file mode 100644 index 0000000..22a2e69 --- /dev/null +++ b/jsr/scripts/convert_binary_to_json.ts @@ -0,0 +1,15 @@ +const dataArray = Deno.readFileSync('./libcpp_bindings_linux.so') + +function base64FromBytes(bytes: Uint8Array): string { + // Chunk to avoid call stack limits in String.fromCharCode(...bigArray) + const chunkSize = 0x8000; + let binary = ""; + for (let i = 0; i < bytes.length; i += chunkSize) { + const chunk = bytes.subarray(i, i + chunkSize); + binary += String.fromCharCode(...chunk); + } + return btoa(binary); +} + +Deno.writeTextFileSync('./libcpp_bindings_linux.json', base64FromBytes(dataArray)) + From 1dad2395b1885af5733cf5919060b476ea76f7c7 Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 09:14:34 +0100 Subject: [PATCH 02/17] ci: Refactor JSR binary embedding and update workflow Replaces the old embed_so.ts and convert_binary_to_json.ts scripts with a new embed_binary.ts script for embedding binaries as JSON. Updates the GitHub Actions workflow to use the new script, adds dry-run publishing, and cleans up related files. Also updates jsr.json.in export path for consistency. --- .github/workflows/publish-jsr.yml | 27 ++++++++------ jsr/bin/x84_64.json | 7 ---- jsr/jsr.json.in | 2 +- jsr/scripts/convert_binary_to_json.ts | 15 -------- jsr/scripts/embed_binary.ts | 26 ++++++++++++++ jsr/scripts/embed_so.ts | 51 --------------------------- 6 files changed, 43 insertions(+), 85 deletions(-) delete mode 100644 jsr/bin/x84_64.json delete mode 100644 jsr/scripts/convert_binary_to_json.ts create mode 100644 jsr/scripts/embed_binary.ts delete mode 100644 jsr/scripts/embed_so.ts diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 63df8cc..1f4834b 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -3,7 +3,11 @@ name: Publish to JSR (@serial/cpp-bindings-linux) on: workflow_dispatch: inputs: {} + push: + branches: + - '*' + tags: - "v*" @@ -48,19 +52,20 @@ jobs: run: | cmake --build build --config Release - - name: Embed .so as JSON/base64 for JSR + - name: Embed binary as JSON/base64 for JSR run: | - deno run --allow-read --allow-write jsr/scripts/embed_so.ts \ - build/libcpp_bindings_linux.so \ - jsr/bin/x84_64.json \ - linux-x86_64 - - - name: Publish package to JSR + deno run --allow-read --allow-write jsr/scripts/embed_binary.ts \ + --binaryPath="build/libcpp_bindings_linux.so" \ + --target="linux-x86_64" + + - name: Publish package to JSR (real) + if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/') working-directory: jsr run: | - # CMake + embed_so.ts generate files (jsr/jsr.json + binaries/*.json), - # which makes the worktree dirty. Publishing is still deterministic because - # the workflow builds + generates in a single run. deno publish --allow-dirty - + - name: Publish package to JSR (dry-run) + if: github.ref_name != 'main' && !startsWith(github.ref, 'refs/tags/') + working-directory: jsr + run: | + deno publish --allow-dirty --dry-run diff --git a/jsr/bin/x84_64.json b/jsr/bin/x84_64.json deleted file mode 100644 index 4184085..0000000 --- a/jsr/bin/x84_64.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "target": "linux-x86_64", - "filename": "libcpp_bindings_linux.so", - "encoding": "base64", - "sha256": "", - "data": "" -} diff --git a/jsr/jsr.json.in b/jsr/jsr.json.in index 3e8c0b5..b98afff 100644 --- a/jsr/jsr.json.in +++ b/jsr/jsr.json.in @@ -4,7 +4,7 @@ "license": "LGPL-3.0-only", "description": "Linux shared-library bindings for Serial-IO/cpp-core (distributed via JSON/base64 because JSR has limited binary support).", "exports": { - "./x84_64": "./bin/x84_64.json" + "./bin/x84_64": "./bin/x84_64.json" }, "publish": { "include": [ diff --git a/jsr/scripts/convert_binary_to_json.ts b/jsr/scripts/convert_binary_to_json.ts deleted file mode 100644 index 22a2e69..0000000 --- a/jsr/scripts/convert_binary_to_json.ts +++ /dev/null @@ -1,15 +0,0 @@ -const dataArray = Deno.readFileSync('./libcpp_bindings_linux.so') - -function base64FromBytes(bytes: Uint8Array): string { - // Chunk to avoid call stack limits in String.fromCharCode(...bigArray) - const chunkSize = 0x8000; - let binary = ""; - for (let i = 0; i < bytes.length; i += chunkSize) { - const chunk = bytes.subarray(i, i + chunkSize); - binary += String.fromCharCode(...chunk); - } - return btoa(binary); -} - -Deno.writeTextFileSync('./libcpp_bindings_linux.json', base64FromBytes(dataArray)) - diff --git a/jsr/scripts/embed_binary.ts b/jsr/scripts/embed_binary.ts new file mode 100644 index 0000000..93d33d1 --- /dev/null +++ b/jsr/scripts/embed_binary.ts @@ -0,0 +1,26 @@ +import { parseArgs } from "jsr:@std/cli@1.0.24"; + + +const args = parseArgs<{ + binaryPath : string, + target : string +}>(Deno.args); + +const jsrBinPath = './jsr/bin'; + +Deno.mkdirSync(jsrBinPath, {recursive: true}); + +Deno.copyFileSync(args.binaryPath, `${jsrBinPath}/x84_64.so`); + +const dataArray = Deno.readFileSync(args.binaryPath); + +Deno.writeTextFileSync( + `${jsrBinPath}/x84_64.json`, + JSON.stringify({ + target: args.target, + filename: args.binaryPath, + encoding: 'base64', + data: dataArray.toBase64() + }) +); + diff --git a/jsr/scripts/embed_so.ts b/jsr/scripts/embed_so.ts deleted file mode 100644 index 81cdafe..0000000 --- a/jsr/scripts/embed_so.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Usage: -// deno run --allow-read --allow-write jsr/scripts/embed_so.ts \ -// ./build/libcpp_bindings_linux.so ./jsr/bin/x84_64.json linux-x86_64 -// -// This converts the shared library into a JSON file containing base64 data for publishing to JSR. - -function bytesToHex(bytes: Uint8Array): string { - return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join(""); -} - -function base64FromBytes(bytes: Uint8Array): string { - // Chunk to avoid call stack limits in String.fromCharCode(...bigArray) - const chunkSize = 0x8000; - let binary = ""; - for (let i = 0; i < bytes.length; i += chunkSize) { - const chunk = bytes.subarray(i, i + chunkSize); - binary += String.fromCharCode(...chunk); - } - return btoa(binary); -} - -if (import.meta.main) { - const [inPath, outPath, target = "linux-x86_64"] = Deno.args; - if (!inPath || !outPath) { - console.error( - "Expected: [target]\nExample: build/libcpp_bindings_linux.so jsr/bin/x84_64.json linux-x86_64", - ); - Deno.exit(2); - } - - const bytes = await Deno.readFile(inPath); - const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes)); - const sha256 = bytesToHex(digest); - - const filename = outPath.endsWith(".json") - ? (target === "linux-x86_64" - ? "libcpp_bindings_linux.so" - : "libcpp_bindings_linux.so") - : "libcpp_bindings_linux.so"; - - const payload = { - target, - filename, - encoding: "base64" as const, - sha256, - data: base64FromBytes(bytes), - }; - - await Deno.writeTextFile(outPath, JSON.stringify(payload)); - console.log(`Wrote ${outPath} (${bytes.length} bytes, sha256=${sha256})`); -} From 0ff77caeb84e3f177abb4a2a5e1516b3d60feeea Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:25:05 +0100 Subject: [PATCH 03/17] ci: refactor --- .github/workflows/publish-jsr.yml | 10 +++++----- CMakeLists.txt | 4 ++-- jsr/{ => package}/.gitignore | 0 jsr/{ => package}/README.md | 0 jsr/{ => package}/jsr.json.in | 0 jsr/scripts/embed_binary.sh | 28 ++++++++++++++++++++++++++++ jsr/scripts/embed_binary.ts | 26 -------------------------- 7 files changed, 35 insertions(+), 33 deletions(-) rename jsr/{ => package}/.gitignore (100%) rename jsr/{ => package}/README.md (100%) rename jsr/{ => package}/jsr.json.in (100%) create mode 100755 jsr/scripts/embed_binary.sh delete mode 100644 jsr/scripts/embed_binary.ts diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 1f4834b..6b082fc 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -40,7 +40,7 @@ jobs: - name: Setup Deno uses: denoland/setup-deno@v2 with: - deno-version: "2.6.0" + deno-version: "2.x" - name: Configure CMake (Release) env: @@ -54,10 +54,10 @@ jobs: - name: Embed binary as JSON/base64 for JSR run: | - deno run --allow-read --allow-write jsr/scripts/embed_binary.ts \ - --binaryPath="build/libcpp_bindings_linux.so" \ - --target="linux-x86_64" - + ./jsr/scripts/embed_binary.sh \ + build/libcpp_bindings_linux.so \ + linux-x86_64 + - name: Publish package to JSR (real) if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/') working-directory: jsr diff --git a/CMakeLists.txt b/CMakeLists.txt index 292fb97..5046ac8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,8 +26,8 @@ project( # Generate JSR package metadata from the same git-derived version as the library. # We generate into the build directory to avoid touching tracked files during normal local builds. configure_file( - "${CMAKE_SOURCE_DIR}/jsr/jsr.json.in" - "${CMAKE_SOURCE_DIR}/jsr/jsr.json" + "${CMAKE_SOURCE_DIR}/jsr/package/jsr.json.in" + "${CMAKE_SOURCE_DIR}/jsr/package/jsr.json" @ONLY ) diff --git a/jsr/.gitignore b/jsr/package/.gitignore similarity index 100% rename from jsr/.gitignore rename to jsr/package/.gitignore diff --git a/jsr/README.md b/jsr/package/README.md similarity index 100% rename from jsr/README.md rename to jsr/package/README.md diff --git a/jsr/jsr.json.in b/jsr/package/jsr.json.in similarity index 100% rename from jsr/jsr.json.in rename to jsr/package/jsr.json.in diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh new file mode 100755 index 0000000..9ac618f --- /dev/null +++ b/jsr/scripts/embed_binary.sh @@ -0,0 +1,28 @@ +#!/bin/sh +set -eu + +BINARY_PATH="$1" +TARGET="$2" + +if [ -z "${BINARY_PATH:-}" ] || [ -z "${TARGET:-}" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +JSR_BIN_PATH="./jsr/package/bin" + +mkdir -p "$JSR_BIN_PATH" + +cp "$BINARY_PATH" "$JSR_BIN_PATH/x84_64.so" + +# base64 without linebreak (GNU + BSD kompatibel) +BASE64_DATA="$(base64 "$BINARY_PATH" | tr -d '\n')" + +cat > "$JSR_BIN_PATH/x84_64.json" <(Deno.args); - -const jsrBinPath = './jsr/bin'; - -Deno.mkdirSync(jsrBinPath, {recursive: true}); - -Deno.copyFileSync(args.binaryPath, `${jsrBinPath}/x84_64.so`); - -const dataArray = Deno.readFileSync(args.binaryPath); - -Deno.writeTextFileSync( - `${jsrBinPath}/x84_64.json`, - JSON.stringify({ - target: args.target, - filename: args.binaryPath, - encoding: 'base64', - data: dataArray.toBase64() - }) -); - From a1f97fda07ab5125ac0e56c9bdfe14b37140e74b Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:26:46 +0100 Subject: [PATCH 04/17] Update publish-jsr.yml --- .github/workflows/publish-jsr.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 6b082fc..59326ba 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -60,12 +60,12 @@ jobs: - name: Publish package to JSR (real) if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/') - working-directory: jsr + working-directory: jsr/package run: | deno publish --allow-dirty - name: Publish package to JSR (dry-run) if: github.ref_name != 'main' && !startsWith(github.ref, 'refs/tags/') - working-directory: jsr + working-directory: jsr/package run: | deno publish --allow-dirty --dry-run From 0ea8eed2143de56564084ed2af8f6c65edbec180 Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:31:09 +0100 Subject: [PATCH 05/17] ci: copy LICENSE --- .github/workflows/publish-jsr.yml | 1 + jsr/package/jsr.json.in | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 59326ba..aa85232 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -57,6 +57,7 @@ jobs: ./jsr/scripts/embed_binary.sh \ build/libcpp_bindings_linux.so \ linux-x86_64 + cp LICENSE ./jsr/package/LICENSE - name: Publish package to JSR (real) if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/') diff --git a/jsr/package/jsr.json.in b/jsr/package/jsr.json.in index b98afff..9226a25 100644 --- a/jsr/package/jsr.json.in +++ b/jsr/package/jsr.json.in @@ -9,6 +9,7 @@ "publish": { "include": [ "README.md", + "LICENSE", "jsr.json", "bin/**" ] From f06985cd7bb85d893b3863bc0ab795d8879f3396 Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:31:35 +0100 Subject: [PATCH 06/17] Update jsr.json.in --- jsr/package/jsr.json.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsr/package/jsr.json.in b/jsr/package/jsr.json.in index 9226a25..69ff564 100644 --- a/jsr/package/jsr.json.in +++ b/jsr/package/jsr.json.in @@ -1,7 +1,7 @@ { "name": "@serial/cpp-bindings-linux", "version": "@PROJECT_VERSION@", - "license": "LGPL-3.0-only", + "license": "LICENSE", "description": "Linux shared-library bindings for Serial-IO/cpp-core (distributed via JSON/base64 because JSR has limited binary support).", "exports": { "./bin/x84_64": "./bin/x84_64.json" From a0c99ec75b25c85649ca4f1e5fbf7c5aecb48771 Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:32:20 +0100 Subject: [PATCH 07/17] Update README.md --- jsr/package/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/jsr/package/README.md b/jsr/package/README.md index 34ec660..8927016 100644 --- a/jsr/package/README.md +++ b/jsr/package/README.md @@ -17,8 +17,3 @@ Deno.writeFileSync(tempFilePath, bytes, { mode: 0o755 }); // Now you can open the binary using for example `Deno.dlopen` ``` - -## License - -This package is licensed under **LGPL-3.0-only** (see the repository root -`LICENSE`). From d5cd761bc193165cd344e1cc5c8da2a84e67ed76 Mon Sep 17 00:00:00 2001 From: Mqxx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:36:54 +0100 Subject: [PATCH 08/17] Update README.md --- jsr/package/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsr/package/README.md b/jsr/package/README.md index 8927016..4782e52 100644 --- a/jsr/package/README.md +++ b/jsr/package/README.md @@ -8,7 +8,7 @@ blob**. Import the JSON and write the `.so` to disk (consumer project example): ```ts -import blob from "@serial/cpp-bindings-linux/x84_64" with { type: "json" }; +import blob from "@serial/cpp-bindings-linux/bin/x84_64" with { type: "json" }; const bytes = new TextEncoder().encode(atob(blob.data)); From 3bd765c270d6bda9cf80de435d422c000a623fec Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:56:35 +0100 Subject: [PATCH 09/17] Update jsr/scripts/embed_binary.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- jsr/scripts/embed_binary.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index 9ac618f..418dfd0 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -13,12 +13,12 @@ JSR_BIN_PATH="./jsr/package/bin" mkdir -p "$JSR_BIN_PATH" -cp "$BINARY_PATH" "$JSR_BIN_PATH/x84_64.so" +cp "$BINARY_PATH" "$JSR_BIN_PATH/x86_64.so" # base64 without linebreak (GNU + BSD kompatibel) BASE64_DATA="$(base64 "$BINARY_PATH" | tr -d '\n')" -cat > "$JSR_BIN_PATH/x84_64.json" < "$JSR_BIN_PATH/x86_64.json" < Date: Thu, 18 Dec 2025 11:00:51 +0100 Subject: [PATCH 10/17] Fix x86_64 export and improve embed_binary.sh output Corrects the export path and filename for x86_64 in jsr.json.in. Updates embed_binary.sh to use only the binary's filename in the generated JSON, rather than the full path. --- jsr/package/jsr.json.in | 2 +- jsr/scripts/embed_binary.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jsr/package/jsr.json.in b/jsr/package/jsr.json.in index 69ff564..0cbcaf8 100644 --- a/jsr/package/jsr.json.in +++ b/jsr/package/jsr.json.in @@ -4,7 +4,7 @@ "license": "LICENSE", "description": "Linux shared-library bindings for Serial-IO/cpp-core (distributed via JSON/base64 because JSR has limited binary support).", "exports": { - "./bin/x84_64": "./bin/x84_64.json" + "./bin/x86_64": "./bin/x86_64.json" }, "publish": { "include": [ diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index 418dfd0..b4b28b0 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -4,6 +4,8 @@ set -eu BINARY_PATH="$1" TARGET="$2" +FILENAME=$(basename ${BINARY_PATH}) + if [ -z "${BINARY_PATH:-}" ] || [ -z "${TARGET:-}" ]; then echo "Usage: $0 " >&2 exit 1 @@ -21,7 +23,7 @@ BASE64_DATA="$(base64 "$BINARY_PATH" | tr -d '\n')" cat > "$JSR_BIN_PATH/x86_64.json" < Date: Thu, 18 Dec 2025 11:01:10 +0100 Subject: [PATCH 11/17] Update embed_binary.sh --- jsr/scripts/embed_binary.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index b4b28b0..2425d17 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -17,7 +17,7 @@ mkdir -p "$JSR_BIN_PATH" cp "$BINARY_PATH" "$JSR_BIN_PATH/x86_64.so" -# base64 without linebreak (GNU + BSD kompatibel) +# base64 without linebreak (GNU + BSD compatible) BASE64_DATA="$(base64 "$BINARY_PATH" | tr -d '\n')" cat > "$JSR_BIN_PATH/x86_64.json" < Date: Thu, 18 Dec 2025 15:28:03 +0100 Subject: [PATCH 12/17] Update jsr/scripts/embed_binary.sh Co-authored-by: Katze719 <38188106+Katze719@users.noreply.github.com> --- jsr/scripts/embed_binary.sh | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index 2425d17..f1c99d9 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -1,30 +1,35 @@ #!/bin/sh set -eu -BINARY_PATH="$1" -TARGET="$2" +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " >&2 + exit 1 +fi -FILENAME=$(basename ${BINARY_PATH}) +BINARY_PATH=$1 +TARGET=$2 -if [ -z "${BINARY_PATH:-}" ] || [ -z "${TARGET:-}" ]; then - echo "Usage: $0 " >&2 +if [ ! -f "$BINARY_PATH" ]; then + echo "Error: binaryPath is not a file: $BINARY_PATH" >&2 exit 1 fi +FILENAME=$(basename "$BINARY_PATH") JSR_BIN_PATH="./jsr/package/bin" mkdir -p "$JSR_BIN_PATH" cp "$BINARY_PATH" "$JSR_BIN_PATH/x86_64.so" -# base64 without linebreak (GNU + BSD compatible) -BASE64_DATA="$(base64 "$BINARY_PATH" | tr -d '\n')" - -cat > "$JSR_BIN_PATH/x86_64.json" < "$JSR_BIN_PATH/x86_64.json" From dee267ab7d4bdc8d17f4f80cb7277b2536005643 Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:46:58 +0100 Subject: [PATCH 13/17] ci: fix path --- .github/workflows/publish-jsr.yml | 3 ++- jsr/scripts/embed_binary.sh | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index aa85232..2598f8c 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -55,7 +55,8 @@ jobs: - name: Embed binary as JSON/base64 for JSR run: | ./jsr/scripts/embed_binary.sh \ - build/libcpp_bindings_linux.so \ + ./build/libcpp_bindings_linux.so \ + ./jsr/package/bin \ linux-x86_64 cp LICENSE ./jsr/package/LICENSE diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index f1c99d9..ce0d1ad 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -7,15 +7,20 @@ if [ "$#" -ne 2 ]; then fi BINARY_PATH=$1 -TARGET=$2 +JSR_BIN_PATH=$2 +TARGET=$3 if [ ! -f "$BINARY_PATH" ]; then - echo "Error: binaryPath is not a file: $BINARY_PATH" >&2 + echo "Error: Binary path is not a file: $BINARY_PATH" >&2 + exit 1 +fi + +if [ ! -d "$JSR_BIN_PATH" ]; then + echo "Error: JSR bin path is not a directory: $JSR_BIN_PATH" >&2 exit 1 fi FILENAME=$(basename "$BINARY_PATH") -JSR_BIN_PATH="./jsr/package/bin" mkdir -p "$JSR_BIN_PATH" From b6990b7e2ff8729786ca979d085b933a59225c6a Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:48:59 +0100 Subject: [PATCH 14/17] Update embed_binary.sh --- jsr/scripts/embed_binary.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index ce0d1ad..0607b4b 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -1,8 +1,8 @@ #!/bin/sh set -eu -if [ "$#" -ne 2 ]; then - echo "Usage: $0 " >&2 +if [ "$#" -ne 3 ]; then + echo "Usage: $0 " >&2 exit 1 fi From 0094489ddcf6523d71ac9db6115dc2c15d04dc97 Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:53:27 +0100 Subject: [PATCH 15/17] Update embed_binary.sh --- jsr/scripts/embed_binary.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/jsr/scripts/embed_binary.sh b/jsr/scripts/embed_binary.sh index 0607b4b..2f500dd 100755 --- a/jsr/scripts/embed_binary.sh +++ b/jsr/scripts/embed_binary.sh @@ -15,11 +15,6 @@ if [ ! -f "$BINARY_PATH" ]; then exit 1 fi -if [ ! -d "$JSR_BIN_PATH" ]; then - echo "Error: JSR bin path is not a directory: $JSR_BIN_PATH" >&2 - exit 1 -fi - FILENAME=$(basename "$BINARY_PATH") mkdir -p "$JSR_BIN_PATH" From ab5b97db8b2ae768797410917a7f0821cfc35adb Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:59:39 +0100 Subject: [PATCH 16/17] Update .github/workflows/publish-jsr.yml Co-authored-by: Katze719 <38188106+Katze719@users.noreply.github.com> --- .github/workflows/publish-jsr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 2598f8c..1e2cdde 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -61,7 +61,7 @@ jobs: cp LICENSE ./jsr/package/LICENSE - name: Publish package to JSR (real) - if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/') + if: github.ref_type == 'tag' working-directory: jsr/package run: | deno publish --allow-dirty From 73112e2dc755a928dbcebfd94a56dd2a052c6d1d Mon Sep 17 00:00:00 2001 From: Mqx <62719703+Mqxx@users.noreply.github.com> Date: Thu, 18 Dec 2025 17:08:10 +0100 Subject: [PATCH 17/17] Update .github/workflows/publish-jsr.yml Co-authored-by: Katze719 <38188106+Katze719@users.noreply.github.com> --- .github/workflows/publish-jsr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-jsr.yml b/.github/workflows/publish-jsr.yml index 1e2cdde..71bc996 100644 --- a/.github/workflows/publish-jsr.yml +++ b/.github/workflows/publish-jsr.yml @@ -67,7 +67,7 @@ jobs: deno publish --allow-dirty - name: Publish package to JSR (dry-run) - if: github.ref_name != 'main' && !startsWith(github.ref, 'refs/tags/') + if: github.ref_type != 'tag' working-directory: jsr/package run: | deno publish --allow-dirty --dry-run