Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rumdl for openSUSE:Factory checked in at 2026-07-13 14:27:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rumdl (Old) and /work/SRC/openSUSE:Factory/.rumdl.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rumdl" Mon Jul 13 14:27:42 2026 rev:86 rq:1365195 version:0.2.31 Changes: -------- --- /work/SRC/openSUSE:Factory/rumdl/rumdl.changes 2026-07-10 17:45:23.477586177 +0200 +++ /work/SRC/openSUSE:Factory/.rumdl.new.1991/rumdl.changes 2026-07-13 14:28:15.787819517 +0200 @@ -1,0 +2,11 @@ +Mon Jul 13 04:49:57 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.2.31: + * Added + - action: install rumdl from GitHub Releases instead of pip + (7f69695) + * Performance + - reflow: optimize inline code mask calculation using + pre-extracted spans (27e5507) + +------------------------------------------------------------------- Old: ---- rumdl-0.2.30.obscpio New: ---- rumdl-0.2.31.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rumdl.spec ++++++ --- /var/tmp/diff_new_pack.Th4G6X/_old 2026-07-13 14:28:18.643917161 +0200 +++ /var/tmp/diff_new_pack.Th4G6X/_new 2026-07-13 14:28:18.647917298 +0200 @@ -17,7 +17,7 @@ Name: rumdl -Version: 0.2.30 +Version: 0.2.31 Release: 0 Summary: Markdown Linter written in Rust License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Th4G6X/_old 2026-07-13 14:28:18.679918391 +0200 +++ /var/tmp/diff_new_pack.Th4G6X/_new 2026-07-13 14:28:18.683918528 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/rvben/rumdl.git</param> <param name="scm">git</param> <param name="submodules">enable</param> - <param name="revision">refs/tags/v0.2.30</param> + <param name="revision">refs/tags/v0.2.31</param> <param name="match-tag">v*.*.*</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Th4G6X/_old 2026-07-13 14:28:18.707919349 +0200 +++ /var/tmp/diff_new_pack.Th4G6X/_new 2026-07-13 14:28:18.707919349 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/rvben/rumdl.git</param> - <param name="changesrevision">12e34feb01c07d62a8161b5ac74940ffe8954c21</param></service></servicedata> + <param name="changesrevision">ade06b88ce3373f033c02892e135212ce2bfe6d0</param></service></servicedata> (No newline at EOF) ++++++ rumdl-0.2.30.obscpio -> rumdl-0.2.31.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/.github/workflows/test-action.yml new/rumdl-0.2.31/.github/workflows/test-action.yml --- old/rumdl-0.2.30/.github/workflows/test-action.yml 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/.github/workflows/test-action.yml 2026-07-12 14:18:05.000000000 +0200 @@ -2,9 +2,9 @@ on: push: branches: [main] - paths: ["action.yml", "scripts/rumdl-action.sh"] + paths: ["action.yml", "scripts/rumdl-action.sh", "__tests__/fixtures/**", ".github/workflows/test-action.yml"] pull_request: - paths: ["action.yml", "scripts/rumdl-action.sh"] + paths: ["action.yml", "scripts/rumdl-action.sh", "__tests__/fixtures/**", ".github/workflows/test-action.yml"] workflow_dispatch: concurrency: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/CHANGELOG.md new/rumdl-0.2.31/CHANGELOG.md --- old/rumdl-0.2.30/CHANGELOG.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/CHANGELOG.md 2026-07-12 14:18:05.000000000 +0200 @@ -70,6 +70,17 @@ + +## [0.2.31](https://github.com/rvben/rumdl/compare/v0.2.30...v0.2.31) - 2026-07-12 + +### Added + +- **action**: install rumdl from GitHub Releases instead of pip ([7f69695](https://github.com/rvben/rumdl/commit/7f69695238e1ebffba75a82cf8336e777a965f4a)) + +### Performance + +- **reflow**: optimize inline code mask calculation using pre-extracted spans ([27e5507](https://github.com/rvben/rumdl/commit/27e55072be01e075a8b6f72b7409c4b29c5f56e1)) + ## [0.2.30](https://github.com/rvben/rumdl/compare/v0.2.29...v0.2.30) - 2026-07-09 ### Added @@ -78,6 +89,7 @@ ### Fixed +- **MD013**: measure reflow shift against the source content column, so blocks nested under a padded list marker keep their position ([54f1359](https://github.com/rvben/rumdl/commit/54f1359d1a147d1f260210cd160ec86de7de70dc)) - **lint-context**: keep lazy continuation lines in their list block ([a17f0af](https://github.com/rvben/rumdl/commit/a17f0af7b7d9c2ab71b7416472f05bb00f928d96)) ## [0.2.29](https://github.com/rvben/rumdl/compare/v0.2.28...v0.2.29) - 2026-07-09 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/Cargo.lock new/rumdl-0.2.31/Cargo.lock --- old/rumdl-0.2.30/Cargo.lock 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/Cargo.lock 2026-07-12 14:18:05.000000000 +0200 @@ -2283,7 +2283,7 @@ [[package]] name = "rumdl" -version = "0.2.30" +version = "0.2.31" dependencies = [ "anyhow", "assert_cmd", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/Cargo.toml new/rumdl-0.2.31/Cargo.toml --- old/rumdl-0.2.30/Cargo.toml 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/Cargo.toml 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "rumdl" -version = "0.2.30" +version = "0.2.31" edition = "2024" rust-version = "1.94.0" description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/README.md new/rumdl-0.2.31/README.md --- old/rumdl-0.2.30/README.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/README.md 2026-07-12 14:18:05.000000000 +0200 @@ -207,7 +207,7 @@ mise install rumdl # Use a specific version for the project -mise use [email protected] +mise use [email protected] ``` ### Using Nix (macOS/Linux) @@ -436,7 +436,7 @@ ```yaml repos: - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 + rev: v0.2.31 hooks: - id: rumdl # Lint only; add args [--fix] to auto-fix - id: rumdl-fmt # Pure format, always exits 0 @@ -452,7 +452,7 @@ ```yaml repos: - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 + rev: v0.2.31 hooks: - id: rumdl args: [--fix] # Auto-fix violations in place @@ -469,7 +469,7 @@ ```yaml repos: - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 + rev: v0.2.31 hooks: - id: rumdl args: [--no-exclude] # Disable all exclude patterns diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/__tests__/fixtures/malformed/bad.md new/rumdl-0.2.31/__tests__/fixtures/malformed/bad.md --- old/rumdl-0.2.30/__tests__/fixtures/malformed/bad.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/__tests__/fixtures/malformed/bad.md 2026-07-12 14:18:05.000000000 +0200 @@ -1,3 +1,2 @@ # Bad markdown - -## No space after hash +##No space after hash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/docs/getting-started/quickstart.md new/rumdl-0.2.31/docs/getting-started/quickstart.md --- old/rumdl-0.2.30/docs/getting-started/quickstart.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/docs/getting-started/quickstart.md 2026-07-12 14:18:05.000000000 +0200 @@ -96,7 +96,7 @@ ```yaml repos: - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 # Use latest version + rev: v0.2.31 # Use latest version hooks: - id: rumdl ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/docs/global-settings.md new/rumdl-0.2.31/docs/global-settings.md --- old/rumdl-0.2.30/docs/global-settings.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/docs/global-settings.md 2026-07-12 14:18:05.000000000 +0200 @@ -1376,7 +1376,7 @@ ```yaml - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 + rev: v0.2.31 hooks: - id: rumdl args: [--config=.rumdl.toml] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/docs/mdformat-comparison.md new/rumdl-0.2.31/docs/mdformat-comparison.md --- old/rumdl-0.2.30/docs/mdformat-comparison.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/docs/mdformat-comparison.md 2026-07-12 14:18:05.000000000 +0200 @@ -232,7 +232,7 @@ # After - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 + rev: v0.2.31 hooks: - id: rumdl ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/docs/usage/ci-cd.md new/rumdl-0.2.31/docs/usage/ci-cd.md --- old/rumdl-0.2.30/docs/usage/ci-cd.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/docs/usage/ci-cd.md 2026-07-12 14:18:05.000000000 +0200 @@ -40,7 +40,7 @@ ```yaml - uses: rvben/rumdl@v0 with: - version: "0.2.30" + version: "0.2.31" path: docs/ ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/docs/usage/pre-commit.md new/rumdl-0.2.31/docs/usage/pre-commit.md --- old/rumdl-0.2.30/docs/usage/pre-commit.md 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/docs/usage/pre-commit.md 2026-07-12 14:18:05.000000000 +0200 @@ -13,7 +13,7 @@ ```yaml title=".pre-commit-config.yaml" repos: - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.30 # Use latest version + rev: v0.2.31 # Use latest version hooks: - id: rumdl # Lint only; add args [--fix] to auto-fix - id: rumdl-fmt # Pure format, always exits 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-darwin-arm64/package.json new/rumdl-0.2.31/npm/cli-darwin-arm64/package.json --- old/rumdl-0.2.30/npm/cli-darwin-arm64/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-darwin-arm64/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-darwin-arm64", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for macOS ARM64 (Apple Silicon)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-darwin-x64/package.json new/rumdl-0.2.31/npm/cli-darwin-x64/package.json --- old/rumdl-0.2.30/npm/cli-darwin-x64/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-darwin-x64/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-darwin-x64", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for macOS x64 (Intel)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-linux-arm64/package.json new/rumdl-0.2.31/npm/cli-linux-arm64/package.json --- old/rumdl-0.2.30/npm/cli-linux-arm64/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-linux-arm64/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-arm64", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for Linux ARM64 (glibc)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-linux-arm64-musl/package.json new/rumdl-0.2.31/npm/cli-linux-arm64-musl/package.json --- old/rumdl-0.2.30/npm/cli-linux-arm64-musl/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-linux-arm64-musl/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-arm64-musl", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for Linux ARM64 (musl/Alpine)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-linux-x64/package.json new/rumdl-0.2.31/npm/cli-linux-x64/package.json --- old/rumdl-0.2.30/npm/cli-linux-x64/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-linux-x64/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-x64", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for Linux x64 (glibc)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-linux-x64-musl/package.json new/rumdl-0.2.31/npm/cli-linux-x64-musl/package.json --- old/rumdl-0.2.30/npm/cli-linux-x64-musl/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-linux-x64-musl/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-x64-musl", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for Linux x64 (musl/Alpine)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/cli-win32-x64/package.json new/rumdl-0.2.31/npm/cli-win32-x64/package.json --- old/rumdl-0.2.30/npm/cli-win32-x64/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/cli-win32-x64/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-win32-x64", - "version": "0.2.30", + "version": "0.2.31", "description": "rumdl binary for Windows x64", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/npm/rumdl/package.json new/rumdl-0.2.31/npm/rumdl/package.json --- old/rumdl-0.2.30/npm/rumdl/package.json 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/npm/rumdl/package.json 2026-07-12 14:18:05.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "rumdl", - "version": "0.2.30", + "version": "0.2.31", "description": "A fast Markdown linter written in Rust", "license": "MIT", "repository": { @@ -33,12 +33,12 @@ "node": ">=18.0.0" }, "optionalDependencies": { - "@rumdl/cli-darwin-x64": "0.2.30", - "@rumdl/cli-darwin-arm64": "0.2.30", - "@rumdl/cli-linux-x64": "0.2.30", - "@rumdl/cli-linux-arm64": "0.2.30", - "@rumdl/cli-linux-x64-musl": "0.2.30", - "@rumdl/cli-linux-arm64-musl": "0.2.30", - "@rumdl/cli-win32-x64": "0.2.30" + "@rumdl/cli-darwin-x64": "0.2.31", + "@rumdl/cli-darwin-arm64": "0.2.31", + "@rumdl/cli-linux-x64": "0.2.31", + "@rumdl/cli-linux-arm64": "0.2.31", + "@rumdl/cli-linux-x64-musl": "0.2.31", + "@rumdl/cli-linux-arm64-musl": "0.2.31", + "@rumdl/cli-win32-x64": "0.2.31" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/scripts/rumdl-action.sh new/rumdl-0.2.31/scripts/rumdl-action.sh --- old/rumdl-0.2.30/scripts/rumdl-action.sh 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/scripts/rumdl-action.sh 2026-07-12 14:18:05.000000000 +0200 @@ -4,14 +4,180 @@ # Version: use input or default to latest rumdl_version="${GHA_RUMDL_VERSION:-}" +rumdl_cmd="rumdl" + +install_via_pip() { + if [ -n "$rumdl_version" ]; then + echo "Installing rumdl (v$rumdl_version) via pip" + pip install rumdl=="$rumdl_version" + else + echo "Installing rumdl (latest) via pip" + pip install rumdl + fi + rumdl_cmd="rumdl" +} + +# Prints "<target-triple> <archive-ext>" for this runner's OS/arch, or nothing if unmapped. +resolve_target() { + local os_name arch_name platform_os platform_arch + + os_name="${RUNNER_OS:-}" + case "$os_name" in + Linux) platform_os="linux" ;; + macOS) platform_os="macos" ;; + Windows) platform_os="windows" ;; + *) + case "$(uname -s)" in + Linux*) platform_os="linux" ;; + Darwin*) platform_os="macos" ;; + MINGW* | MSYS* | CYGWIN*) platform_os="windows" ;; + *) platform_os="" ;; + esac + ;; + esac + + arch_name="${RUNNER_ARCH:-}" + case "$arch_name" in + X64 | x86_64 | AMD64) platform_arch="x86_64" ;; + ARM64 | arm64 | aarch64) platform_arch="aarch64" ;; + *) + case "$(uname -m)" in + x86_64 | amd64) platform_arch="x86_64" ;; + aarch64 | arm64) platform_arch="aarch64" ;; + *) platform_arch="" ;; + esac + ;; + esac + + case "${platform_os}-${platform_arch}" in + linux-x86_64) echo "x86_64-unknown-linux-musl tar.gz" ;; + linux-aarch64) echo "aarch64-unknown-linux-musl tar.gz" ;; + macos-x86_64) echo "x86_64-apple-darwin tar.gz" ;; + macos-aarch64) echo "aarch64-apple-darwin tar.gz" ;; + windows-x86_64) echo "x86_64-pc-windows-msvc zip" ;; + *) echo "" ;; + esac +} + +# Portable lowercase sha256 of $1: prefers sha256sum (Linux/Git Bash), falls back to +# shasum -a 256 (macOS default toolset does not guarantee sha256sum). +sha256_of() { + if command -v sha256sum >/dev/null 2>&1; then + sha256sum "$1" | awk '{print $1}' + else + shasum -a 256 "$1" | awk '{print $1}' + fi +} + +# Attempts the prebuilt-binary install for target triple $1 / archive extension $2. +# On success, sets rumdl_cmd to the binary's absolute path and returns 0. +# Returns 1 (graceful fallback to pip) only for the 3 defined cases: unparseable "latest" +# redirect, 404 on the asset, or 404 on its checksum. Any other failure (network error, +# unexpected HTTP status, checksum mismatch) is a hard exit — never silently falls back, +# since that would mask connectivity flakiness or a corrupted/tampered download as an +# unsupported-platform case. +try_install_binary() { + local target="$1" ext="$2" tag effective_url curl_status + + if [ -n "$rumdl_version" ]; then + tag="v${rumdl_version}" + else + curl_status=0 + effective_url=$(curl -fsSLo /dev/null --retry 3 -w '%{url_effective}' "https://github.com/rvben/rumdl/releases/latest") || curl_status=$? + if [ "$curl_status" -ne 0 ]; then + echo "::error::Could not reach GitHub to resolve the latest rumdl release (curl exit $curl_status)" + exit 1 + fi + if [[ "$effective_url" =~ /tag/(v[0-9][^/]*)$ ]]; then + tag="${BASH_REMATCH[1]}" + else + echo "Latest-release redirect did not resolve to a parseable tag ($effective_url) — falling back to pip" + return 1 + fi + fi + echo "Resolved release: $tag" + + local asset="rumdl-${tag}-${target}.${ext}" + local checksum_asset="${asset}.sha256" + local base_url="https://github.com/rvben/rumdl/releases/download/${tag}" + local workdir + workdir=$(mktemp -d) || exit 1 + + local subshell_status=0 + ( + cd "$workdir" || exit 1 + + echo "Downloading $asset" + http_code=$(curl -sL --retry 3 -o "$asset" -w '%{http_code}' "${base_url}/${asset}" || echo "000") + if [ "$http_code" = "404" ]; then + echo "No prebuilt binary published for $target — falling back to pip" + exit 2 + elif [ "$http_code" != "200" ]; then + echo "::error::Failed to download $asset (HTTP $http_code)" + exit 1 + fi + + echo "Downloading $checksum_asset" + http_code=$(curl -sL --retry 3 -o "$checksum_asset" -w '%{http_code}' "${base_url}/${checksum_asset}" || echo "000") + if [ "$http_code" = "404" ]; then + echo "No checksum published for $asset — falling back to pip" + exit 2 + elif [ "$http_code" != "200" ]; then + echo "::error::Failed to download $checksum_asset (HTTP $http_code)" + exit 1 + fi + + echo "Verifying checksum" + expected_hash=$(awk '{print $1}' "$checksum_asset" | tr -d '\r' | tr '[:upper:]' '[:lower:]') + actual_hash=$(sha256_of "$asset" | tr '[:upper:]' '[:lower:]') + if [ "$expected_hash" != "$actual_hash" ]; then + echo "::error::Checksum mismatch for $asset (expected $expected_hash, got $actual_hash)" + exit 1 + fi + + echo "Extracting $asset" + if [ "$ext" = "zip" ]; then + if [ -x "/c/Windows/System32/tar.exe" ]; then + /c/Windows/System32/tar.exe -xf "$asset" + else + powershell -NoProfile -Command "Expand-Archive -Path '$asset' -DestinationPath '.' -Force" + fi + else + tar -xzf "$asset" + fi + ) || subshell_status=$? + + case "$subshell_status" in + 0) : ;; + 2) return 1 ;; + *) exit "$subshell_status" ;; + esac + + if [ "$ext" = "zip" ]; then + rumdl_cmd="${workdir}/rumdl.exe" + else + rumdl_cmd="${workdir}/rumdl" + chmod +x "$rumdl_cmd" + fi + echo "Installed rumdl binary: $rumdl_cmd" + return 0 +} echo -if [ -n "$rumdl_version" ]; then - echo "Installing rumdl (v$rumdl_version)" - pip install rumdl=="$rumdl_version" +target_info=$(resolve_target) +if [ -n "$target_info" ]; then + if command -v curl >/dev/null 2>&1; then + read -r target ext <<<"$target_info" + if ! try_install_binary "$target" "$ext"; then + install_via_pip + fi + else + echo "curl not found — falling back to pip" + install_via_pip + fi else - echo "Installing rumdl (latest)" - pip install rumdl + echo "No prebuilt rumdl binary for RUNNER_OS='${RUNNER_OS:-}' RUNNER_ARCH='${RUNNER_ARCH:-}' — falling back to pip" + install_via_pip fi echo @@ -75,7 +241,7 @@ # Run rumdl and capture output set +e -results=$(rumdl check "${lint_paths[@]}" "${rumdl_args[@]}" 2>&1) +results=$("$rumdl_cmd" check "${lint_paths[@]}" "${rumdl_args[@]}" 2>&1) exit_code=$? set -e diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.2.30/src/utils/text_reflow.rs new/rumdl-0.2.31/src/utils/text_reflow.rs --- old/rumdl-0.2.30/src/utils/text_reflow.rs 2026-07-09 19:39:55.000000000 +0200 +++ new/rumdl-0.2.31/src/utils/text_reflow.rs 2026-07-12 14:18:05.000000000 +0200 @@ -123,61 +123,31 @@ /// Build a boolean mask indicating which character positions are inside inline code spans. /// Handles single, double, and triple backtick delimiters. fn compute_inline_code_mask(text: &str) -> Vec<bool> { + let code_spans = extract_code_spans(text); let chars: Vec<char> = text.chars().collect(); - let len = chars.len(); - let mut mask = vec![false; len]; - let mut i = 0; - - while i < len { - if chars[i] == '`' { - // Count opening backticks - let open_start = i; - let mut backtick_count = 0; - while i < len && chars[i] == '`' { - backtick_count += 1; - i += 1; - } - - // Find matching closing backticks (same count) - let mut found_close = false; - let content_start = i; - while i < len { - if chars[i] == '`' { - let close_start = i; - let mut close_count = 0; - while i < len && chars[i] == '`' { - close_count += 1; - i += 1; - } - if close_count == backtick_count { - // Mark the content between the delimiters (not the backticks themselves) - for item in mask.iter_mut().take(close_start).skip(content_start) { - *item = true; - } - // Also mark the opening and closing backticks - for item in mask.iter_mut().take(content_start).skip(open_start) { - *item = true; - } - for item in mask.iter_mut().take(i).skip(close_start) { - *item = true; - } - found_close = true; - break; - } - } else { - i += 1; - } - } - - if !found_close { - // No matching close — backticks are literal, not code span - i = open_start + backtick_count; - } - } else { - i += 1; + let mut mask = vec![false; chars.len()]; + let mut span_it = code_spans.iter().peekable(); + let mut byte_idx = 0; + // Map character indices to byte-offset based code spans in a single pass. + // Since code spans are sorted by start offset, we advance the span iterator + // as our character byte index passes the end of the current span. + for (char_idx, ch) in chars.iter().enumerate() { + let next_byte_idx = byte_idx + ch.len_utf8(); + while let Some(span) = span_it.peek() { + if span.end <= byte_idx { + span_it.next(); + } else { + break; + } + } + if let Some(span) = span_it.peek() + && byte_idx >= span.start + && byte_idx < span.end + { + mask[char_idx] = true; } + byte_idx = next_byte_idx; } - mask } @@ -823,6 +793,26 @@ spans } +#[derive(Debug, Clone)] +struct CodeSpan { + start: usize, + end: usize, +} + +fn extract_code_spans(text: &str) -> Vec<CodeSpan> { + let mut spans = Vec::new(); + let parser = Parser::new(text).into_offset_iter(); + for (event, range) in parser { + if let Event::Code(_) = event { + spans.push(CodeSpan { + start: range.start, + end: range.end, + }); + } + } + spans +} + #[derive(Debug, Clone)] struct LinkSpan { start: usize, ++++++ rumdl.obsinfo ++++++ --- /var/tmp/diff_new_pack.Th4G6X/_old 2026-07-13 14:28:19.823957503 +0200 +++ /var/tmp/diff_new_pack.Th4G6X/_new 2026-07-13 14:28:19.827957640 +0200 @@ -1,5 +1,5 @@ name: rumdl -version: 0.2.30 -mtime: 1783618795 -commit: 12e34feb01c07d62a8161b5ac74940ffe8954c21 +version: 0.2.31 +mtime: 1783858685 +commit: ade06b88ce3373f033c02892e135212ce2bfe6d0 ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/rumdl/vendor.tar.zst /work/SRC/openSUSE:Factory/.rumdl.new.1991/vendor.tar.zst differ: char 7, line 1
