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-04-21 12:43:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rumdl (Old) and /work/SRC/openSUSE:Factory/.rumdl.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rumdl" Tue Apr 21 12:43:46 2026 rev:58 rq:1348303 version:0.1.76 Changes: -------- --- /work/SRC/openSUSE:Factory/rumdl/rumdl.changes 2026-04-18 23:20:23.260398913 +0200 +++ /work/SRC/openSUSE:Factory/.rumdl.new.11940/rumdl.changes 2026-04-21 12:45:52.833062982 +0200 @@ -1,0 +2,10 @@ +Mon Apr 20 18:25:54 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.1.76: + * Fixed + - cli: error when --config path does not exist (c328c11) + * - Update to version 0.1.75: + * Added + - cli: add -c short alias for --config (3aaaca4) + +------------------------------------------------------------------- Old: ---- rumdl-0.1.74.obscpio New: ---- rumdl-0.1.76.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rumdl.spec ++++++ --- /var/tmp/diff_new_pack.ZNhP7c/_old 2026-04-21 12:45:55.965192793 +0200 +++ /var/tmp/diff_new_pack.ZNhP7c/_new 2026-04-21 12:45:55.969192959 +0200 @@ -17,7 +17,7 @@ Name: rumdl -Version: 0.1.74 +Version: 0.1.76 Release: 0 Summary: Markdown Linter written in Rust License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ZNhP7c/_old 2026-04-21 12:45:56.009194616 +0200 +++ /var/tmp/diff_new_pack.ZNhP7c/_new 2026-04-21 12:45:56.013194782 +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">v0.1.74</param> + <param name="revision">v0.1.76</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.ZNhP7c/_old 2026-04-21 12:45:56.041195943 +0200 +++ /var/tmp/diff_new_pack.ZNhP7c/_new 2026-04-21 12:45:56.049196274 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/rvben/rumdl.git</param> - <param name="changesrevision">bca528dda610d93073d1d94659c034c6b1146e39</param></service></servicedata> + <param name="changesrevision">3af73dca6bf9cf509a1cb24620e75c942385eb98</param></service></servicedata> (No newline at EOF) ++++++ rumdl-0.1.74.obscpio -> rumdl-0.1.76.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/.github/workflows/release.yml new/rumdl-0.1.76/.github/workflows/release.yml --- old/rumdl-0.1.74/.github/workflows/release.yml 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/.github/workflows/release.yml 2026-04-19 22:15:01.000000000 +0200 @@ -152,7 +152,16 @@ # Install rust target for cross-compilation - name: Install Rust target - run: rustup target add ${{ matrix.target }} + # Runner images may ship a partially-installed toolchain whose + # binaries conflict with rustup when it installs the toolchain + # pinned by rust-toolchain.toml. Remove any stale install first so + # rustup can lay down the pinned toolchain cleanly alongside the + # requested target. + shell: bash + run: | + pinned=$(awk -F '"' '/^channel/ { print $2 }' rust-toolchain.toml) + rustup toolchain uninstall "$pinned" >/dev/null 2>&1 || true + rustup target add ${{ matrix.target }} # Build wheel - name: Build wheel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/CHANGELOG.md new/rumdl-0.1.76/CHANGELOG.md --- old/rumdl-0.1.74/CHANGELOG.md 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/CHANGELOG.md 2026-04-19 22:15:01.000000000 +0200 @@ -17,6 +17,20 @@ + + +## [0.1.76](https://github.com/rvben/rumdl/compare/v0.1.75...v0.1.76) - 2026-04-19 + +### Fixed + +- **cli**: error when --config path does not exist ([c328c11](https://github.com/rvben/rumdl/commit/c328c110b8ae538d040875d142d4bd130e2cb83e)) + +## [0.1.75](https://github.com/rvben/rumdl/compare/v0.1.74...v0.1.75) - 2026-04-19 + +### Added + +- **cli**: add -c short alias for --config ([3aaaca4](https://github.com/rvben/rumdl/commit/3aaaca431bb649567b99c887b4d29d241b34b891)) + ## [0.1.74](https://github.com/rvben/rumdl/compare/v0.1.73...v0.1.74) - 2026-04-18 ### Fixed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/Cargo.lock new/rumdl-0.1.76/Cargo.lock --- old/rumdl-0.1.74/Cargo.lock 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/Cargo.lock 2026-04-19 22:15:01.000000000 +0200 @@ -2268,7 +2268,7 @@ [[package]] name = "rumdl" -version = "0.1.74" +version = "0.1.76" dependencies = [ "anyhow", "assert_cmd", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/Cargo.toml new/rumdl-0.1.76/Cargo.toml --- old/rumdl-0.1.74/Cargo.toml 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/Cargo.toml 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "rumdl" -version = "0.1.74" +version = "0.1.76" 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.1.74/npm/cli-darwin-arm64/package.json new/rumdl-0.1.76/npm/cli-darwin-arm64/package.json --- old/rumdl-0.1.74/npm/cli-darwin-arm64/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-darwin-arm64/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-darwin-arm64", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for macOS ARM64 (Apple Silicon)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-darwin-x64/package.json new/rumdl-0.1.76/npm/cli-darwin-x64/package.json --- old/rumdl-0.1.74/npm/cli-darwin-x64/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-darwin-x64/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-darwin-x64", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for macOS x64 (Intel)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-linux-arm64/package.json new/rumdl-0.1.76/npm/cli-linux-arm64/package.json --- old/rumdl-0.1.74/npm/cli-linux-arm64/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-linux-arm64/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-arm64", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for Linux ARM64 (glibc)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-linux-arm64-musl/package.json new/rumdl-0.1.76/npm/cli-linux-arm64-musl/package.json --- old/rumdl-0.1.74/npm/cli-linux-arm64-musl/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-linux-arm64-musl/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-arm64-musl", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for Linux ARM64 (musl/Alpine)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-linux-x64/package.json new/rumdl-0.1.76/npm/cli-linux-x64/package.json --- old/rumdl-0.1.74/npm/cli-linux-x64/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-linux-x64/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-x64", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for Linux x64 (glibc)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-linux-x64-musl/package.json new/rumdl-0.1.76/npm/cli-linux-x64-musl/package.json --- old/rumdl-0.1.74/npm/cli-linux-x64-musl/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-linux-x64-musl/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-linux-x64-musl", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for Linux x64 (musl/Alpine)", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/cli-win32-x64/package.json new/rumdl-0.1.76/npm/cli-win32-x64/package.json --- old/rumdl-0.1.74/npm/cli-win32-x64/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/cli-win32-x64/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "@rumdl/cli-win32-x64", - "version": "0.1.74", + "version": "0.1.76", "description": "rumdl binary for Windows x64", "license": "MIT", "repository": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/npm/rumdl/package.json new/rumdl-0.1.76/npm/rumdl/package.json --- old/rumdl-0.1.74/npm/rumdl/package.json 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/npm/rumdl/package.json 2026-04-19 22:15:01.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "rumdl", - "version": "0.1.74", + "version": "0.1.76", "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.1.74", - "@rumdl/cli-darwin-arm64": "0.1.74", - "@rumdl/cli-linux-x64": "0.1.74", - "@rumdl/cli-linux-arm64": "0.1.74", - "@rumdl/cli-linux-x64-musl": "0.1.74", - "@rumdl/cli-linux-arm64-musl": "0.1.74", - "@rumdl/cli-win32-x64": "0.1.74" + "@rumdl/cli-darwin-x64": "0.1.76", + "@rumdl/cli-darwin-arm64": "0.1.76", + "@rumdl/cli-linux-x64": "0.1.76", + "@rumdl/cli-linux-arm64": "0.1.76", + "@rumdl/cli-linux-x64-musl": "0.1.76", + "@rumdl/cli-linux-arm64-musl": "0.1.76", + "@rumdl/cli-win32-x64": "0.1.76" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/src/main.rs new/rumdl-0.1.76/src/main.rs --- old/rumdl-0.1.74/src/main.rs 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/src/main.rs 2026-04-19 22:15:01.000000000 +0200 @@ -43,6 +43,7 @@ /// Path to configuration file #[arg( long, + short = 'c', global = true, help = "Path to configuration file", conflicts_with_all = ["no_config", "isolated"] @@ -107,7 +108,7 @@ #[arg(long, short = 'f')] fixable: bool, /// Filter by category (use --list-categories to see options) - #[arg(long, short = 'c', value_name = "CATEGORY")] + #[arg(long, value_name = "CATEGORY")] category: Option<String>, /// Include full documentation in output (for json/json-lines) #[arg(long)] @@ -248,6 +249,21 @@ Color::Auto => colored::control::unset_override(), } + // Validate --config path upfront so any subcommand that accepts it fails + // loudly on a missing path rather than silently ignoring the flag. This + // also catches misuse of the new `-c` short alias on subcommands like + // `rumdl rule`, which used to treat `-c` as the short form of --category. + if let Some(ref path) = cli.config + && !std::path::Path::new(path).is_file() + { + eprintln!("error: config file not found: {path}"); + if matches!(cli.command, Commands::Rule { .. }) { + eprintln!("note: `-c` is the short alias for `--config`."); + eprintln!(" To filter rules by category, use `--category {path}`."); + } + exit::tool_error(); + } + // Catch panics and print a message, exit 1 let result = std::panic::catch_unwind(|| { match cli.command { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/tests/cli/cli_integration_tests.rs new/rumdl-0.1.76/tests/cli/cli_integration_tests.rs --- old/rumdl-0.1.74/tests/cli/cli_integration_tests.rs 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/tests/cli/cli_integration_tests.rs 2026-04-19 22:15:01.000000000 +0200 @@ -1408,17 +1408,17 @@ fn test_rule_command_short_flags() { let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); - // Test -f (fixable) and -c (category) short flags + // -f is the short form of --fixable. --category has no short form because + // -c is reserved for the global --config flag. let output = Command::new(rumdl_exe) - .args(["rule", "-f", "-c", "heading", "-o", "json"]) + .args(["rule", "-f", "--category", "heading", "-o", "json"]) .output() - .expect("Failed to execute 'rumdl rule -f -c heading -o json'"); + .expect("Failed to execute 'rumdl rule -f --category heading -o json'"); let stdout = String::from_utf8_lossy(&output.stdout).to_string(); let rules: Vec<serde_json::Value> = serde_json::from_str(&stdout).expect("Failed to parse JSON"); assert!(!rules.is_empty(), "Should return at least one rule"); - // All rules should be fixable and in heading category for rule in &rules { let fix_avail = rule.get("fix_availability").and_then(|f| f.as_str()).unwrap(); let category = rule.get("category").and_then(|c| c.as_str()).unwrap(); @@ -1429,6 +1429,114 @@ } #[test] +fn test_config_short_flag_loads_file() { + // -c is the short alias for --config. This is the conventional short flag + // in the wider ecosystem (markdownlint-cli, ruff, etc.) and tools like + // MegaLinter pass it by default. + let temp_dir = tempfile::tempdir().expect("Failed to create temp dir"); + let config_path = temp_dir.path().join("custom.toml"); + std::fs::write(&config_path, "[global]\ndisable = [\"MD013\"]\n").expect("Failed to write config"); + + let md_path = temp_dir.path().join("long.md"); + std::fs::write( + &md_path, + "# Heading\n\nThis line is deliberately much longer than eighty characters to trigger MD013 when it is enabled by default.\n", + ) + .expect("Failed to write markdown file"); + + let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); + let output = Command::new(rumdl_exe) + .args(["check", "-c"]) + .arg(&config_path) + .arg(&md_path) + .output() + .expect("Failed to execute 'rumdl check -c <path> <file>'"); + + assert!( + output.status.success(), + "rumdl check -c <path> should succeed when MD013 is disabled in config; stderr: {}", + String::from_utf8_lossy(&output.stderr) + ); +} + +#[test] +fn test_rule_short_c_with_bogus_path_errors_with_category_hint() { + // `-c` is the global short alias for `--config`. On the `rule` subcommand, + // passing a value that isn't a file must fail non-zero so that old + // invocations like `rumdl rule -c heading` (which used to mean + // `--category heading`) surface loudly rather than returning unfiltered + // output. The error must also point users to `--category`. + let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); + let output = Command::new(rumdl_exe) + .args(["rule", "-c", "heading", "-o", "json"]) + .output() + .expect("Failed to execute 'rumdl rule -c heading -o json'"); + + assert!( + !output.status.success(), + "rumdl rule -c heading must not succeed when 'heading' is not a config file" + ); + let stderr = String::from_utf8_lossy(&output.stderr); + assert!( + stderr.contains("config file not found"), + "stderr should explain the missing path; got: {stderr}" + ); + assert!( + stderr.contains("--category"), + "stderr should hint at --category on the rule subcommand; got: {stderr}" + ); +} + +#[test] +fn test_check_with_missing_config_path_exits_non_zero() { + // A missing --config path must be fatal. Historically `rumdl check` + // printed "Config error" but still exited 0, silently linting with + // defaults instead of honoring the user's explicit config choice. + let temp_dir = tempfile::tempdir().expect("Failed to create temp dir"); + let md_path = temp_dir.path().join("sample.md"); + std::fs::write(&md_path, "# Heading\n").expect("Failed to write markdown file"); + let missing_config = temp_dir.path().join("does-not-exist.toml"); + + let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); + let output = Command::new(rumdl_exe) + .args(["check", "-c"]) + .arg(&missing_config) + .arg(&md_path) + .output() + .expect("Failed to execute 'rumdl check -c <missing> <file>'"); + + assert!( + !output.status.success(), + "rumdl check with a missing --config path must exit non-zero" + ); +} + +#[test] +fn test_rule_with_valid_config_path_succeeds() { + // A valid --config path on the rule subcommand should be accepted even + // though rule currently ignores config contents. Validation is about + // catching user error, not about requiring every subcommand to consume + // the config. + let temp_dir = tempfile::tempdir().expect("Failed to create temp dir"); + let config_path = temp_dir.path().join("ok.toml"); + std::fs::write(&config_path, "[global]\n").expect("Failed to write config"); + + let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); + let output = Command::new(rumdl_exe) + .args(["rule", "-c"]) + .arg(&config_path) + .args(["-o", "json"]) + .output() + .expect("Failed to execute 'rumdl rule -c <valid> -o json'"); + + assert!( + output.status.success(), + "rumdl rule with a valid --config path should succeed; stderr: {}", + String::from_utf8_lossy(&output.stderr) + ); +} + +#[test] fn test_config_command_lists_options() { let rumdl_exe = env!("CARGO_BIN_EXE_rumdl"); let output = Command::new(rumdl_exe) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/tests/config/config_file_command_test.rs new/rumdl-0.1.76/tests/config/config_file_command_test.rs --- old/rumdl-0.1.74/tests/config/config_file_command_test.rs 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/tests/config/config_file_command_test.rs 2026-04-19 22:15:01.000000000 +0200 @@ -81,8 +81,10 @@ assert_eq!(output.status.code(), Some(2), "Expected exit code 2 for file not found"); let stderr = String::from_utf8(output.stderr).unwrap(); - assert!(stderr.contains("Config error")); - assert!(stderr.contains("Failed to read config file")); + assert!( + stderr.contains("config file not found") || stderr.contains("Failed to read config file"), + "stderr should mention the missing config file; got: {stderr}" + ); assert!(stderr.contains("nonexistent.toml")); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rumdl-0.1.74/tests/config/config_tests.rs new/rumdl-0.1.76/tests/config/config_tests.rs --- old/rumdl-0.1.74/tests/config/config_tests.rs 2026-04-18 13:58:03.000000000 +0200 +++ new/rumdl-0.1.76/tests/config/config_tests.rs 2026-04-19 22:15:01.000000000 +0200 @@ -816,7 +816,9 @@ let stdout = String::from_utf8_lossy(&output.stdout); let combined_output = format!("{stderr}{stdout}"); assert!( - combined_output.contains("Failed to read config file") || combined_output.contains("Config error"), + combined_output.contains("config file not found") + || combined_output.contains("Failed to read config file") + || combined_output.contains("Config error"), "CLI should show file reading error: stderr='{stderr}' stdout='{stdout}'" ); } ++++++ rumdl.obsinfo ++++++ --- /var/tmp/diff_new_pack.ZNhP7c/_old 2026-04-21 12:45:57.349250155 +0200 +++ /var/tmp/diff_new_pack.ZNhP7c/_new 2026-04-21 12:45:57.365250819 +0200 @@ -1,5 +1,5 @@ name: rumdl -version: 0.1.74 -mtime: 1776513483 -commit: bca528dda610d93073d1d94659c034c6b1146e39 +version: 0.1.76 +mtime: 1776629701 +commit: 3af73dca6bf9cf509a1cb24620e75c942385eb98 ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/rumdl/vendor.tar.zst /work/SRC/openSUSE:Factory/.rumdl.new.11940/vendor.tar.zst differ: char 7, line 1
