diff --git a/.github/workflows/librdsparser.yml b/.github/workflows/librdsparser.yml new file mode 100644 index 0000000..f63ddd1 --- /dev/null +++ b/.github/workflows/librdsparser.yml @@ -0,0 +1,61 @@ +name: Fetch and Commit librdsparser + +on: + workflow_dispatch: + inputs: + version: + description: 'Release version' + required: true + default: 'v1.1' + +jobs: + fetch-and-commit: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Download all librdsparser release assets + run: | + set -e + cd server/libraries + + VERSION="${{ github.event.inputs.version }}" + echo "Fetching librdsparser release: $VERSION" + + platforms=( + "aarch64" + "arm" + "macos" + "mingw32" + "mingw64" + "x86" + "x86_64" + ) + + base_url="https://github.com/kkonradpl/librdsparser/releases/download/$VERSION" + + for platform in "${platforms[@]}"; do + filename="librdsparser-${platform}.zip" + dir="${platform}" + mkdir -p "$dir" + + echo "Downloading $filename..." + curl -sSL -o "$dir/$filename" "$base_url/$filename" + + echo "Extracting from $filename..." + unzip -j "$dir/$filename" "*.dll" "*.so" "*.dylib" -d "$dir" || echo "No binaries in $filename" + rm "$dir/$filename" + done + + - name: Commit and push binaries to the repo + run: | + git config user.name "github-actions" + git config user.email "github-actions@github.com" + + git add server/libraries + git diff --cached --quiet || git commit -m "Add librdsparser ${{ github.event.inputs.version }}" + git push \ No newline at end of file diff --git a/server/datahandler.js b/server/datahandler.js index 0ffa684..8a2f7bb 100644 --- a/server/datahandler.js +++ b/server/datahandler.js @@ -12,13 +12,17 @@ let shared_Library; if (platform === 'win32') { unicode_type = 'int16_t'; - shared_Library=path.join(__dirname, "libraries", "librdsparser.dll"); + arch_type = (cpuArchitecture === 'x64' ? 'mingw64' : 'mingw32'); + shared_Library=path.join(__dirname, "libraries", arch_type, "librdsparser.dll"); } else if (platform === 'linux') { unicode_type = 'int32_t'; - shared_Library=path.join(__dirname, "libraries", "librdsparser_" + cpuArchitecture + ".so"); + arch_type = (cpuArchitecture === 'x64' ? 'x86_64' : + (cpuArchitecture === 'ia32' ? 'x86' : + (cpuArchitecture === 'arm64' ? 'aarch64' : cpuArchitecture))); + shared_Library=path.join(__dirname, "libraries", arch_type, "librdsparser.so"); } else if (platform === 'darwin') { unicode_type = 'int32_t'; - shared_Library=path.join(__dirname, "libraries", "librdsparser" + ".dylib"); + shared_Library=path.join(__dirname, "libraries", "macos", "librdsparser.dylib"); } const lib = koffi.load(shared_Library); @@ -42,8 +46,8 @@ const rdsparser = { free: lib.func('void rdsparser_free(void *rds)'), clear: lib.func('void rdsparser_clear(void *rds)'), parse_string: lib.func('bool rdsparser_parse_string(void *rds, const char *input)'), - set_text_correction: lib.func('bool rdsparser_set_text_correction(void *rds, uint8_t text, uint8_t type, uint8_t error)'), - set_text_progressive: lib.func('bool rdsparser_set_text_progressive(void *rds, uint8_t string, bool state)'), + set_text_correction: lib.func('void rdsparser_set_text_correction(void *rds, uint8_t text, uint8_t type, uint8_t error)'), + set_text_progressive: lib.func('void rdsparser_set_text_progressive(void *rds, uint8_t string, uint8_t state)'), get_pi: lib.func('int32_t rdsparser_get_pi(void *rds)'), get_pty: lib.func('int8_t rdsparser_get_pty(void *rds)'), get_tp: lib.func('int8_t rdsparser_get_tp(void *rds)'), @@ -169,8 +173,8 @@ rdsparser.set_text_correction(rds, 0, 0, 2); rdsparser.set_text_correction(rds, 0, 1, 2); rdsparser.set_text_correction(rds, 1, 0, 2); rdsparser.set_text_correction(rds, 1, 1, 2); -rdsparser.set_text_progressive(rds, 0, true) -rdsparser.set_text_progressive(rds, 1, true) +rdsparser.set_text_progressive(rds, 0, 1) +rdsparser.set_text_progressive(rds, 1, 1) rdsparser.register_pi(rds, callbacks.pi); rdsparser.register_pty(rds, callbacks.pty); rdsparser.register_tp(rds, callbacks.tp); diff --git a/server/libraries/aarch64/librdsparser.so b/server/libraries/aarch64/librdsparser.so new file mode 100755 index 0000000..978dcdc Binary files /dev/null and b/server/libraries/aarch64/librdsparser.so differ diff --git a/server/libraries/arm/librdsparser.so b/server/libraries/arm/librdsparser.so new file mode 100755 index 0000000..7f65101 Binary files /dev/null and b/server/libraries/arm/librdsparser.so differ diff --git a/server/libraries/librdsparser.dll b/server/libraries/librdsparser.dll deleted file mode 100644 index 7469441..0000000 Binary files a/server/libraries/librdsparser.dll and /dev/null differ diff --git a/server/libraries/librdsparser_arm.so b/server/libraries/librdsparser_arm.so deleted file mode 100644 index 8ac7bff..0000000 Binary files a/server/libraries/librdsparser_arm.so and /dev/null differ diff --git a/server/libraries/librdsparser_arm64.so b/server/libraries/librdsparser_arm64.so deleted file mode 100644 index 3a948df..0000000 Binary files a/server/libraries/librdsparser_arm64.so and /dev/null differ diff --git a/server/libraries/librdsparser_ia32.so b/server/libraries/librdsparser_ia32.so deleted file mode 100644 index 736e1f4..0000000 Binary files a/server/libraries/librdsparser_ia32.so and /dev/null differ diff --git a/server/libraries/librdsparser_x64.so b/server/libraries/librdsparser_x64.so deleted file mode 100644 index cf6941d..0000000 Binary files a/server/libraries/librdsparser_x64.so and /dev/null differ diff --git a/server/libraries/librdsparser.dylib b/server/libraries/macos/librdsparser.dylib old mode 100644 new mode 100755 similarity index 58% rename from server/libraries/librdsparser.dylib rename to server/libraries/macos/librdsparser.dylib index 2c93ecb..f2decd9 Binary files a/server/libraries/librdsparser.dylib and b/server/libraries/macos/librdsparser.dylib differ diff --git a/server/libraries/mingw32/librdsparser.dll b/server/libraries/mingw32/librdsparser.dll new file mode 100644 index 0000000..82283f1 Binary files /dev/null and b/server/libraries/mingw32/librdsparser.dll differ diff --git a/server/libraries/mingw64/librdsparser.dll b/server/libraries/mingw64/librdsparser.dll new file mode 100644 index 0000000..7b5da06 Binary files /dev/null and b/server/libraries/mingw64/librdsparser.dll differ diff --git a/server/libraries/x86/librdsparser.so b/server/libraries/x86/librdsparser.so new file mode 100755 index 0000000..4b7f90f Binary files /dev/null and b/server/libraries/x86/librdsparser.so differ diff --git a/server/libraries/x86_64/librdsparser.so b/server/libraries/x86_64/librdsparser.so new file mode 100755 index 0000000..1692d60 Binary files /dev/null and b/server/libraries/x86_64/librdsparser.so differ