Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package topgrade for openSUSE:Factory checked in at 2026-09-22 15:51:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/topgrade (Old) and /work/SRC/openSUSE:Factory/.topgrade.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "topgrade" Tue Sep 22 15:51:20 2026 rev:34 rq:1379553 version:17.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/topgrade/topgrade.changes 2026-09-21 12:24:20.405102284 +0200 +++ /work/SRC/openSUSE:Factory/.topgrade.new.383539/topgrade.changes 2026-09-22 15:52:07.155499973 +0200 @@ -1,0 +2,10 @@ +Tue Sep 22 01:26:09 UTC 2026 - Gerald Chen <[email protected]> + +- Update to version 17.12.1: + * chore: release v17.12.1 (#2365) + * fix: don't set cwd when respawning in tmux to fix crash (#2367) + * fix(mise): skip self-update when managed by Homebrew (#2363) + * chore(deps): update github/codeql-action action to v4.38.1 (#2351) + * chore(deps): lock file maintenance (#2364) + +------------------------------------------------------------------- Old: ---- topgrade-17.12.0.tar.zst New: ---- topgrade-17.12.1.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ topgrade.spec ++++++ --- /var/tmp/diff_new_pack.ZN6ta1/_old 2026-09-22 15:52:09.841611271 +0200 +++ /var/tmp/diff_new_pack.ZN6ta1/_new 2026-09-22 15:52:09.842611313 +0200 @@ -17,7 +17,7 @@ Name: topgrade -Version: 17.12.0 +Version: 17.12.1 Release: 0 Summary: Upgrade all the things License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ZN6ta1/_old 2026-09-22 15:52:09.898613633 +0200 +++ /var/tmp/diff_new_pack.ZN6ta1/_new 2026-09-22 15:52:09.909614089 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/topgrade-rs/topgrade.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">v17.12.0</param> + <param name="revision">v17.12.1</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.ZN6ta1/_old 2026-09-22 15:52:09.940615373 +0200 +++ /var/tmp/diff_new_pack.ZN6ta1/_new 2026-09-22 15:52:09.947615663 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/topgrade-rs/topgrade.git</param> - <param name="changesrevision">b194f967150612d51596ef7e3cb1ddbdbd1369c6</param></service><service name="tar_scm"> + <param name="changesrevision">25e20b9e0e1d035b1e731d7fa913ad9463f21c8f</param></service><service name="tar_scm"> <param name="url">https://ghproxy.net/https://github.com/topgrade-rs/topgrade.git</param> <param name="changesrevision">ef0a0d69bbe0cb08d6c4930ee18b734e03c215fb</param></service></servicedata> (No newline at EOF) ++++++ topgrade-17.12.0.tar.zst -> topgrade-17.12.1.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/.github/workflows/check_security_vulnerability.yml new/topgrade-17.12.1/.github/workflows/check_security_vulnerability.yml --- old/topgrade-17.12.0/.github/workflows/check_security_vulnerability.yml 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/.github/workflows/check_security_vulnerability.yml 2026-09-21 20:30:21.000000000 +0200 @@ -32,6 +32,6 @@ uses: microsoft/DevSkim-Action@4b5047945a44163b94642a1cecc0d93a3f428cc6 # v1.0.16 - name: Upload DevSkim scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 + uses: github/codeql-action/upload-sarif@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1 with: sarif_file: devskim-results.sarif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/.github/workflows/scorecards.yml new/topgrade-17.12.1/.github/workflows/scorecards.yml --- old/topgrade-17.12.0/.github/workflows/scorecards.yml 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/.github/workflows/scorecards.yml 2026-09-21 20:30:21.000000000 +0200 @@ -71,6 +71,6 @@ # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 + uses: github/codeql-action/upload-sarif@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1 with: sarif_file: results.sarif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/CHANGELOG.md new/topgrade-17.12.1/CHANGELOG.md --- old/topgrade-17.12.0/CHANGELOG.md 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/CHANGELOG.md 2026-09-21 20:30:21.000000000 +0200 @@ -7,6 +7,12 @@ ## [Unreleased] +## [17.12.1](https://github.com/topgrade-rs/topgrade/compare/v17.12.0...v17.12.1) - 2026-09-21 + +### Fixed +- don't set cwd when respawning in tmux to fix crash ([#2367](https://github.com/topgrade-rs/topgrade/pull/2367)) +- *(mise)* skip self-update when managed by Homebrew ([#2363](https://github.com/topgrade-rs/topgrade/pull/2363)) + ## [17.12.0](https://github.com/topgrade-rs/topgrade/compare/v17.11.0...v17.12.0) - 2026-09-20 ### Changed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/Cargo.lock new/topgrade-17.12.1/Cargo.lock --- old/topgrade-17.12.0/Cargo.lock 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/Cargo.lock 2026-09-21 20:30:21.000000000 +0200 @@ -184,7 +184,7 @@ "futures-lite", "parking", "polling", - "rustix 1.1.4", + "rustix 1.1.5", "slab", "windows-sys 0.61.2", ] @@ -215,7 +215,7 @@ "cfg-if", "event-listener", "futures-lite", - "rustix 1.1.4", + "rustix 1.1.5", ] [[package]] @@ -241,7 +241,7 @@ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.4", + "rustix 1.1.5", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -261,7 +261,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -412,9 +412,9 @@ [[package]] name = "cc" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4" +checksum = "54413ede23c2daf518f35156dfde027feb2374004d63bd497f983c8db9c0e313" dependencies = [ "find-msvc-tools", "jobserver", @@ -424,9 +424,9 @@ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "cfg_aliases" @@ -460,9 +460,9 @@ [[package]] name = "clap" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -480,9 +480,9 @@ [[package]] name = "clap_builder" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -492,30 +492,30 @@ [[package]] name = "clap_complete" -version = "4.6.9" +version = "4.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19" +checksum = "037e2a1a92236d0aff7e845093f64661d6df4c02c9fcc61a60e9e1d736fa392f" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.6.4" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] name = "clap_lex" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "clap_mangen" @@ -751,7 +751,7 @@ "filedescriptor", "mio", "parking_lot", - "rustix 1.1.4", + "rustix 1.1.5", "signal-hook", "signal-hook-mio", "winapi", @@ -885,7 +885,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1102,9 +1102,9 @@ [[package]] name = "find-msvc-tools" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" +checksum = "ef25905e51abafe4dcea6c15fec58c57b601cdbd0ee53d22ea1d3016c587d39b" [[package]] name = "flate2" @@ -1221,7 +1221,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1470,9 +1470,9 @@ [[package]] name = "hyper-rustls" -version = "0.27.9" +version = "0.27.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" dependencies = [ "http", "hyper", @@ -2014,7 +2014,7 @@ "proc-macro2", "quote", "rustversion", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -2043,9 +2043,9 @@ [[package]] name = "normpath" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9985ef7269fa99f3b12437bb698381da2428743ab90f20393f399fa14cab21a" +checksum = "b11ce00d2594068e8a27c9146fdc5cf9f3ac38eb42c7cd34d05fea618873ac9f" dependencies = [ "windows-sys 0.61.2", ] @@ -2307,7 +2307,7 @@ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.4", + "rustix 1.1.5", "windows-sys 0.61.2", ] @@ -2450,9 +2450,9 @@ [[package]] name = "rand" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" dependencies = [ "chacha20", "getrandom 0.4.3", @@ -2494,11 +2494,10 @@ [[package]] name = "redox_users" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +checksum = "60dc65c0ff1a7ae1294b0c67b9f14baf70b644404010370171787bfac1038fc0" dependencies = [ - "getrandom 0.2.17", "libredox", "thiserror 2.0.20", ] @@ -2696,9 +2695,9 @@ [[package]] name = "rustix" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ "bitflags 2.13.2", "errno", @@ -2926,7 +2925,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -2950,7 +2949,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -3176,9 +3175,9 @@ [[package]] name = "syn" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" dependencies = [ "proc-macro2", "quote", @@ -3196,13 +3195,13 @@ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.6", ] [[package]] @@ -3290,7 +3289,7 @@ "fastrand", "getrandom 0.4.3", "once_cell", - "rustix 1.1.4", + "rustix 1.1.5", "windows-sys 0.61.2", ] @@ -3331,7 +3330,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -3531,7 +3530,7 @@ [[package]] name = "topgrade" -version = "17.12.0" +version = "17.12.1" dependencies = [ "chrono", "clap", @@ -3743,9 +3742,9 @@ [[package]] name = "unicode-ident" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] name = "unicode-width" @@ -3789,9 +3788,9 @@ [[package]] name = "ureq-proto" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0809a01d1ca5a51ca70db32bb2a19157582a526505ef3c19e3b343a59aa5ad" +checksum = "f86fd172ccca569e458f61b6bdd6220965a9ef36e672a6852953b51a0e1583be" dependencies = [ "base64 0.23.1", "http", @@ -3935,7 +3934,7 @@ "bumpalo", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "wasm-bindgen-shared", ] @@ -4397,7 +4396,7 @@ checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.4", + "rustix 1.1.5", ] [[package]] @@ -4419,13 +4418,13 @@ [[package]] name = "yoke-derive" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +checksum = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.6", "synstructure", ] @@ -4451,7 +4450,7 @@ "hex", "libc", "ordered-stream", - "rustix 1.1.4", + "rustix 1.1.5", "serde", "serde_repr", "tracing", @@ -4473,7 +4472,7 @@ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "zbus_names", "zvariant", "zvariant_utils", @@ -4530,13 +4529,13 @@ [[package]] name = "zerofrom-derive" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.6", "synstructure", ] @@ -4576,7 +4575,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -4607,9 +4606,9 @@ [[package]] name = "zlib-rs" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" [[package]] name = "zmij" @@ -4653,7 +4652,7 @@ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "zvariant_utils", ] @@ -4666,6 +4665,6 @@ "proc-macro2", "quote", "serde", - "syn 3.0.5", + "syn 3.0.6", "winnow 1.0.4", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/Cargo.toml new/topgrade-17.12.1/Cargo.toml --- old/topgrade-17.12.0/Cargo.toml 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/Cargo.toml 2026-09-21 20:30:21.000000000 +0200 @@ -6,7 +6,7 @@ license = "GPL-3.0-or-later" repository = "https://github.com/topgrade-rs/topgrade" rust-version = "1.88.0" -version = "17.12.0" +version = "17.12.1" exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"] edition = "2024" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/src/main.rs new/topgrade-17.12.1/src/main.rs --- old/topgrade-17.12.0/src/main.rs 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/src/main.rs 2026-09-21 20:30:21.000000000 +0200 @@ -144,10 +144,6 @@ debug!("self-update Feature Enabled: {:?}", cfg!(feature = "self-update")); debug!("Configuration: {:?}", config); - // Some steps (like mise or pi) have different behavior when ran in a project directory. - // Since Topgrade only handles global updates, run all commands in a temporary directory. - let _temp_cwd = TempCwd::new()?; - if config.run_in_tmux() && env::var("TOPGRADE_INSIDE_TMUX").is_err() { #[cfg(unix)] { @@ -156,6 +152,10 @@ } } + // Some steps (like mise or pi) have different behavior when ran in a project directory. + // Since Topgrade only handles global updates, run all commands in a temporary directory. + let _temp_cwd = TempCwd::new()?; + let elevated = is_elevated(); #[cfg(unix)] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/src/steps/generic.rs new/topgrade-17.12.1/src/steps/generic.rs --- old/topgrade-17.12.0/src/steps/generic.rs 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/src/steps/generic.rs 2026-09-21 20:30:21.000000000 +0200 @@ -34,7 +34,9 @@ use crate::step::Step; use crate::sudo::SudoExecuteOpts; use crate::terminal::{print_info, print_separator, shell}; -use crate::utils::{PathExt, check_is_python_2_or_shim, require, require_one, require_option, which}; +use crate::utils::{ + PathExt, check_is_python_2_or_shim, is_installed_via_homebrew, require, require_one, require_option, which, +}; use crate::{ error::{DryRun, SkipStep, StepFailed, TopgradeError}, terminal::print_warning, @@ -1043,9 +1045,7 @@ // `pi update --self` errors when PI_SKIP_VERSION_CHECK is set. Homebrew sets it when it runs. let pi_skip_version_check_env = std::env::var("PI_SKIP_VERSION_CHECK").is_ok(); - let pi_installed_through_homebrew = pi - .canonicalize() - .is_ok_and(|p| p.to_string_lossy().contains("/Cellar/")); + let pi_installed_through_homebrew = is_installed_via_homebrew(&pi); if supports_explicit_update_targets { if pi_skip_version_check_env { @@ -2834,23 +2834,27 @@ ctx.execute(&mise).args(["plugins", "update"]).status_checked()?; - // This used to run self-update and check for exit code 1 and the string 'cannot update' in stderr. - // However, this caused issues with mise's y/n prompt (https://github.com/topgrade-rs/topgrade/issues/2307). - let supports_self_update = ctx - .execute(&mise) - .always() - .arg("--help") - .output_checked_utf8()? - .stdout - .contains("self-update"); - - if supports_self_update { - ctx.execute(&mise) - .args(["self-update"]) - .arg_if(ctx.config().yes(Step::Mise), "--yes") - .status_checked()?; + if is_installed_via_homebrew(&mise) { + debug!("Skipping `mise self-update`: mise is installed via Homebrew"); } else { - debug!("Mise self-update not available"); + // This used to run self-update and check for exit code 1 and the string 'cannot update' in stderr. + // However, this caused issues with mise's y/n prompt (https://github.com/topgrade-rs/topgrade/issues/2307). + let supports_self_update = ctx + .execute(&mise) + .always() + .arg("--help") + .output_checked_utf8()? + .stdout + .contains("self-update"); + + if supports_self_update { + ctx.execute(&mise) + .args(["self-update"]) + .arg_if(ctx.config().yes(Step::Mise), "--yes") + .status_checked()?; + } else { + debug!("Mise self-update not available"); + } } ctx.execute(&mise) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.12.0/src/utils.rs new/topgrade-17.12.1/src/utils.rs --- old/topgrade-17.12.0/src/utils.rs 2026-09-20 19:17:38.000000000 +0200 +++ new/topgrade-17.12.1/src/utils.rs 2026-09-21 20:30:21.000000000 +0200 @@ -253,6 +253,12 @@ .into()) } +pub fn is_installed_via_homebrew(binary: &Path) -> bool { + binary + .canonicalize() + .is_ok_and(|p| p.to_string_lossy().contains("/Cellar/")) +} + #[allow(dead_code)] pub fn require_one_path<T: AsRef<Path> + Debug>(paths: impl IntoIterator<Item = T>) -> Result<PathBuf> { let mut failed_paths = Vec::new(); ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/topgrade/vendor.tar.zst /work/SRC/openSUSE:Factory/.topgrade.new.383539/vendor.tar.zst differ: char 7, line 1
