Compare commits

..

1 Commits

Author SHA1 Message Date
renovate[bot]
7a038ad9eb fix(deps): update rust crate globset to v0.4.18 2025-11-15 07:29:42 +00:00
29 changed files with 376 additions and 607 deletions

View File

@@ -2,7 +2,7 @@
name: Bug report name: Bug report
about: Topgrade is misbehaving about: Topgrade is misbehaving
title: '' title: ''
type: Bug labels: 'C-bug'
assignees: '' assignees: ''
--- ---
@@ -14,65 +14,52 @@ Please make sure to
before filing a new one! before filing a new one!
Questions labeled with `Optional` can be skipped. Questions labeled with `Optional` can be skipped.
-->
<!--
If you're here to report about a "No asset found" error, please make sure that If you're here to report about a "No asset found" error, please make sure that
an hour has been passed since the last release was made. an hour has been passed since the last release was made.
--> -->
## Checklist
- [ ] I have searched the issue tracker for relevant or duplicate issues.
## Erroneous Behavior ## Erroneous Behavior
<!-- <!--
What actually happened? What actually happened?
--> -->
## Expected Behavior ## Expected Behavior
<!-- <!--
Describe the expected behavior. Describe the expected behavior
--> -->
## Steps to reproduce ## Steps to reproduce
<!-- <!--
A minimal example to reproduce the issue. A minimal example to reproduce the issue
--> -->
## Possible Cause (Optional) ## Possible Cause (Optional)
<!-- <!--
If you know the possible cause of the issue, please tell us. If you know the possible cause of the issue, please tell us.
--> -->
## Problem persists without calling from topgrade ## Problem persists without calling from topgrade
<!-- <!--
Execute the erroneous command directly to see if the problem persists. Execute the erroneous command directly to see if the problem persists
--> -->
- [ ] Yes - [ ] Yes
- [ ] No - [ ] No
## Ran through `Remote Execution` ## Did you run topgrade through `Remote Execution`
<!--
Did you run topgrade through `Remote Execution`?
-->
- [ ] Yes - [ ] Yes
- [ ] No - [ ] No
If yes, does the issue still occur when you run topgrade directly in your If yes, does the issue still occur when you run topgrade directly in your
remote host? remote host
- [ ] Yes - [ ] Yes
- [ ] No - [ ] No
## Configuration file (Optional) ## Configuration file (Optional)
<!-- <!--
Paste your configuration file inside the code block if you think this issue is Paste your configuration file inside the code block if you think this issue is
related to configuration. related to configuration.
@@ -83,7 +70,6 @@ related to configuration.
``` ```
## Additional Details ## Additional Details
- Operation System/Version - Operation System/Version
<!-- For example, Fedora Linux 38 --> <!-- For example, Fedora Linux 38 -->
@@ -96,7 +82,6 @@ related to configuration.
- Topgrade version (`topgrade -V`) - Topgrade version (`topgrade -V`)
## Verbose Output (`topgrade -v`) ## Verbose Output (`topgrade -v`)
<!-- <!--
Paste the verbose output into the pre-tags Paste the verbose output into the pre-tags
--> -->

View File

@@ -1,15 +1,21 @@
--- ---
name: General feature request name: Feature request
about: Suggest a general feature, or feature within an already existing step about: Can you please support...?
title: '' title: ''
type: Feature labels: 'C-feature request'
assignees: '' assignees: ''
--- ---
## Checklist ## I want to suggest a new step
- [ ] I have searched the issue tracker for relevant or duplicate issues. * Which tool is this about? Where is its repository?
* Which operating systems are supported by this tool?
* What should Topgrade do to figure out if the tool needs to be invoked?
* Which exact commands should Topgrade run?
* Does it have a `--dry-run` option? i.e., print what should be done and exit
* Does it need the user to confirm the execution? And does it provide a `--yes`
option to skip this step?
## I want to suggest some general feature ## I want to suggest some general feature
@@ -19,5 +25,3 @@ Topgrade should...
<!-- Assuming that someone else implements the feature, <!-- Assuming that someone else implements the feature,
please state if you know how to test it from a side branch of Topgrade. --> please state if you know how to test it from a side branch of Topgrade. -->
- [ ] I am able and willing to implement this feature myself

View File

@@ -1,30 +0,0 @@
---
name: New step request
about: Suggest a new step/package manager to update
title: ''
type: Feature
labels: request step
assignees: ''
---
## Checklist
- [ ] I have searched the issue tracker for relevant or duplicate issues.
## I want to suggest a new step
* Which tool is this about? Where is its repository?
* Which operating systems are supported by this tool?
* What should Topgrade do to figure out if the tool needs to be invoked?
* Which exact commands should Topgrade run?
* Does it have a `--dry-run` option? i.e., print what should be done and exit
* Does it need the user to confirm the execution? And does it provide a `--yes`
option to skip this?
## More information
<!-- Assuming that someone else implements the step,
please state if you know how to test it from a side branch of Topgrade. -->
- [ ] I am able and willing to implement this step myself

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -24,7 +24,7 @@ jobs:
security-events: write security-events: write
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -32,6 +32,6 @@ jobs:
uses: microsoft/DevSkim-Action@4b5047945a44163b94642a1cecc0d93a3f428cc6 # v1.0.16 uses: microsoft/DevSkim-Action@4b5047945a44163b94642a1cecc0d93a3f428cc6 # v1.0.16
- name: Upload DevSkim scan results to GitHub Security tab - name: Upload DevSkim scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with: with:
sarif_file: devskim-results.sarif sarif_file: devskim-results.sarif

View File

@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -39,7 +39,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -135,7 +135,7 @@ jobs:
matrix_target: ${{ matrix.target }} matrix_target: ${{ matrix.target }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -33,7 +33,7 @@ jobs:
env: env:
tag: ${{ github.event.client_payload.tag }} tag: ${{ github.event.client_payload.tag }}
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -169,7 +169,7 @@ jobs:
matrix_target: ${{ matrix.target }} matrix_target: ${{ matrix.target }}
tag: ${{ github.event.client_payload.tag }} tag: ${{ github.event.client_payload.tag }}
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: 'Checkout Repository' - name: 'Checkout Repository'
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -1,12 +1,11 @@
name: 'Lint PR' name: 'Lint PR'
on: on:
pull_request_target: # zizmor: ignore[dangerous-triggers] this is the only way, and we're not running user code pull_request_target:
types: types:
- opened - opened
- edited - edited
- reopened - reopened
- synchronize
jobs: jobs:
main: main:

View File

@@ -17,7 +17,7 @@ jobs:
id-token: write # For trusted publishing id-token: write # For trusted publishing
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with: with:
fetch-depth: 0 fetch-depth: 0
persist-credentials: false persist-credentials: false
@@ -53,7 +53,7 @@ jobs:
cancel-in-progress: false cancel-in-progress: false
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with: with:
fetch-depth: 0 fetch-depth: 0
persist-credentials: false persist-credentials: false

View File

@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Bump formulae - name: Bump formulae
uses: dawidd6/action-homebrew-bump-formula@c5ddc585e75f0f750a8b4f610688b4bec9e80915 # v6 uses: dawidd6/action-homebrew-bump-formula@3428a0601bba3173ec0bdcc945be23fa27aa4c31 # v5
with: with:
# Custom GitHub access token with only the 'public_repo' scope enabled # Custom GitHub access token with only the 'public_repo' scope enabled
token: ${{secrets.HOMEBREW_ACCESS_TOKEN}} token: ${{secrets.HOMEBREW_ACCESS_TOKEN}}

View File

@@ -15,7 +15,7 @@ jobs:
matrix: matrix:
target: [x86_64, x86, aarch64] target: [x86_64, x86, aarch64]
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -37,7 +37,7 @@ jobs:
matrix: matrix:
target: [x64, x86] target: [x64, x86]
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -58,7 +58,7 @@ jobs:
matrix: matrix:
target: [x86_64, aarch64] target: [x86_64, aarch64]
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -76,7 +76,7 @@ jobs:
sdist: sdist:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false

View File

@@ -36,7 +36,7 @@ jobs:
steps: steps:
- name: "Checkout code" - name: "Checkout code"
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with: with:
persist-credentials: false persist-credentials: false
@@ -71,6 +71,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard. # Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning" - name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with: with:
sarif_file: results.sarif sarif_file: results.sarif

View File

@@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/gitleaks/gitleaks - repo: https://github.com/gitleaks/gitleaks
rev: v8.29.0 rev: v8.28.0
hooks: hooks:
- id: gitleaks - id: gitleaks
@@ -16,7 +16,7 @@ repos:
- id: trailing-whitespace - id: trailing-whitespace
- repo: https://github.com/crate-ci/typos - repo: https://github.com/crate-ci/typos
rev: v1.39.2 rev: v1.38.1
hooks: hooks:
- id: typos - id: typos

View File

@@ -7,73 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [16.4.2](https://github.com/topgrade-rs/topgrade/compare/v16.4.1...v16.4.2) - 2025-11-20
### Other
- *(deps)* update dawidd6/action-homebrew-bump-formula action to v6 ([#1543](https://github.com/topgrade-rs/topgrade/pull/1543))
## [16.4.1](https://github.com/topgrade-rs/topgrade/compare/v16.4.0...v16.4.1) - 2025-11-20
### Other
- refactor run_containers error handling ([#1541](https://github.com/topgrade-rs/topgrade/pull/1541))
## [16.4.0](https://github.com/topgrade-rs/topgrade/compare/v16.3.0...v16.4.0) - 2025-11-20
### Added
- *(os)* add Origami Linux support ([#1530](https://github.com/topgrade-rs/topgrade/pull/1530))
- *(containers)* add option to run `system prune` ([#1523](https://github.com/topgrade-rs/topgrade/pull/1523))
### Fixed
- *(deps)* restore custom commands order ([#1535](https://github.com/topgrade-rs/topgrade/pull/1535))
### Other
- *(deps)* update clap, clap_builder, clap_complete ([#1540](https://github.com/topgrade-rs/topgrade/pull/1540))
- *(deps)* update github/codeql-action action to v4.31.4 ([#1531](https://github.com/topgrade-rs/topgrade/pull/1531))
- *(config)* add custom commands order test ([#1536](https://github.com/topgrade-rs/topgrade/pull/1536))
- make Config methods more consistent by utilizing `#[derive(Default)]` ([#1534](https://github.com/topgrade-rs/topgrade/pull/1534))
- *(issue templates)* use issue types ([#1533](https://github.com/topgrade-rs/topgrade/pull/1533))
- *(deps)* lock file maintenance ([#1505](https://github.com/topgrade-rs/topgrade/pull/1505))
- *(deps)* update actions/checkout digest to 93cb6ef ([#1526](https://github.com/topgrade-rs/topgrade/pull/1526))
- *(deps)* update actions/checkout action to v5.0.1 ([#1527](https://github.com/topgrade-rs/topgrade/pull/1527))
## [16.3.0](https://github.com/topgrade-rs/topgrade/compare/v16.2.1...v16.3.0) - 2025-11-16
### Added
- print summary and run post commands when (q)uit is used ([#1254](https://github.com/topgrade-rs/topgrade/pull/1254))
- run pre_sudo before pre_commands ([#1469](https://github.com/topgrade-rs/topgrade/pull/1469))
- *(chezmoi)* add `exclude_encrypted` config ([#1453](https://github.com/topgrade-rs/topgrade/pull/1453))
### Fixed
- *(elan)* skip running elan update on elan >=4.0.0 ([#1507](https://github.com/topgrade-rs/topgrade/pull/1507))
- *(deps)* Fix non-locked install on older version of Rust ([#1485](https://github.com/topgrade-rs/topgrade/pull/1485))
- *(deps)* Fix non-locked install on older version of Rust ([#1482](https://github.com/topgrade-rs/topgrade/pull/1482))
- *(bun)* skip self-update if not installed via official script ([#1476](https://github.com/topgrade-rs/topgrade/pull/1476))
- *(openbsd)* fix compilation on OpenBSD ([#1473](https://github.com/topgrade-rs/topgrade/pull/1473))
### Other
- *(license)* switch license variant to GPL-3.0-or-later ([#1518](https://github.com/topgrade-rs/topgrade/pull/1518))
- *(deps)* update some dependencies ([#1512](https://github.com/topgrade-rs/topgrade/pull/1512))
- *(deps)* update github/codeql-action action to v4.31.3 ([#1483](https://github.com/topgrade-rs/topgrade/pull/1483))
- remove unnecessary cfg-if dependency ([#1509](https://github.com/topgrade-rs/topgrade/pull/1509))
- *(lint_pr)* run on synchronize, and add zizmor ignore ([#1508](https://github.com/topgrade-rs/topgrade/pull/1508))
- *(pre-commit)* autoupdate ([#1464](https://github.com/topgrade-rs/topgrade/pull/1464))
- improve issue templates ([#1235](https://github.com/topgrade-rs/topgrade/pull/1235))
- *(deps)* bump mac-notification-sys, use main branch temporarily ([#1506](https://github.com/topgrade-rs/topgrade/pull/1506))
- *(deps)* lock file maintenance ([#1481](https://github.com/topgrade-rs/topgrade/pull/1481))
- *(deps)* pin dependencies ([#1478](https://github.com/topgrade-rs/topgrade/pull/1478))
- *(deps)* update actions/dependency-review-action action to v4.8.2 ([#1479](https://github.com/topgrade-rs/topgrade/pull/1479))
- Add Renovate ([#1477](https://github.com/topgrade-rs/topgrade/pull/1477))
- Replace main's self update with a proper step call ([#1470](https://github.com/topgrade-rs/topgrade/pull/1470))
- *(release)* Fix homebrew releases ([#1468](https://github.com/topgrade-rs/topgrade/pull/1468))
## [16.2.1](https://github.com/topgrade-rs/topgrade/compare/v16.2.0...v16.2.1) - 2025-11-10 ## [16.2.1](https://github.com/topgrade-rs/topgrade/compare/v16.2.0...v16.2.1) - 2025-11-10
### Fixed ### Fixed

471
Cargo.lock generated
View File

@@ -85,15 +85,6 @@ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]]
name = "arbitrary"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
dependencies = [
"derive_arbitrary",
]
[[package]] [[package]]
name = "arc-swap" name = "arc-swap"
version = "1.7.1" version = "1.7.1"
@@ -151,7 +142,7 @@ dependencies = [
"futures-lite", "futures-lite",
"parking", "parking",
"polling", "polling",
"rustix", "rustix 1.1.2",
"slab", "slab",
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
@@ -182,7 +173,7 @@ dependencies = [
"cfg-if", "cfg-if",
"event-listener", "event-listener",
"futures-lite", "futures-lite",
"rustix", "rustix 1.1.2",
] ]
[[package]] [[package]]
@@ -208,7 +199,7 @@ dependencies = [
"cfg-if", "cfg-if",
"futures-core", "futures-core",
"futures-io", "futures-io",
"rustix", "rustix 1.1.2",
"signal-hook-registry", "signal-hook-registry",
"slab", "slab",
"windows-sys 0.61.2", "windows-sys 0.61.2",
@@ -288,6 +279,12 @@ version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "block"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.10.4" version = "0.10.4"
@@ -297,15 +294,6 @@ dependencies = [
"generic-array", "generic-array",
] ]
[[package]]
name = "block2"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
dependencies = [
"objc2",
]
[[package]] [[package]]
name = "blocking" name = "blocking"
version = "1.6.2" version = "1.6.2"
@@ -385,9 +373,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.53" version = "4.5.51"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@@ -395,9 +383,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.53" version = "4.5.51"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
@@ -407,9 +395,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_complete" name = "clap_complete"
version = "4.5.61" version = "4.5.60"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" checksum = "8e602857739c5a4291dfa33b5a298aeac9006185229a700e5810a3ef7272d971"
dependencies = [ dependencies = [
"clap", "clap",
] ]
@@ -497,19 +485,6 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "console"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4"
dependencies = [
"encode_unicode",
"libc",
"once_cell",
"unicode-width",
"windows-sys 0.61.2",
]
[[package]] [[package]]
name = "const-oid" name = "const-oid"
version = "0.9.6" version = "0.9.6"
@@ -647,17 +622,6 @@ dependencies = [
"powerfmt", "powerfmt",
] ]
[[package]]
name = "derive_arbitrary"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.110",
]
[[package]] [[package]]
name = "digest" name = "digest"
version = "0.10.7" version = "0.10.7"
@@ -677,6 +641,16 @@ dependencies = [
"dirs-sys", "dirs-sys",
] ]
[[package]]
name = "dirs-next"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
dependencies = [
"cfg-if",
"dirs-sys-next",
]
[[package]] [[package]]
name = "dirs-sys" name = "dirs-sys"
version = "0.5.0" version = "0.5.0"
@@ -685,18 +659,19 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [ dependencies = [
"libc", "libc",
"option-ext", "option-ext",
"redox_users", "redox_users 0.5.2",
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
name = "dispatch2" name = "dirs-sys-next"
version = "0.3.0" version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
dependencies = [ dependencies = [
"bitflags 2.10.0", "libc",
"objc2", "redox_users 0.4.6",
"winapi",
] ]
[[package]] [[package]]
@@ -783,12 +758,6 @@ dependencies = [
"syn 2.0.110", "syn 2.0.110",
] ]
[[package]]
name = "env_home"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
[[package]] [[package]]
name = "equivalent" name = "equivalent"
version = "1.0.2" version = "1.0.2"
@@ -807,13 +776,13 @@ dependencies = [
[[package]] [[package]]
name = "etcetera" name = "etcetera"
version = "0.10.0" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6" checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"home", "home",
"windows-sys 0.59.0", "windows-sys 0.48.0",
] ]
[[package]] [[package]]
@@ -1069,9 +1038,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]] [[package]]
name = "globset" name = "globset"
version = "0.4.16" version = "0.4.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"bstr", "bstr",
@@ -1091,25 +1060,6 @@ dependencies = [
"walkdir", "walkdir",
] ]
[[package]]
name = "h2"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
dependencies = [
"atomic-waker",
"bytes",
"fnv",
"futures-core",
"futures-sink",
"http",
"indexmap",
"slab",
"tokio",
"tokio-util",
"tracing",
]
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.14.5" version = "0.14.5"
@@ -1142,11 +1092,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]] [[package]]
name = "home" name = "home"
version = "0.5.11" version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
dependencies = [ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@@ -1199,7 +1149,6 @@ dependencies = [
"bytes", "bytes",
"futures-channel", "futures-channel",
"futures-core", "futures-core",
"h2",
"http", "http",
"http-body", "http-body",
"httparse", "httparse",
@@ -1418,13 +1367,24 @@ version = "0.17.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
dependencies = [ dependencies = [
"console 0.15.11", "console",
"number_prefix", "number_prefix",
"portable-atomic", "portable-atomic",
"unicode-width", "unicode-width",
"web-time", "web-time",
] ]
[[package]]
name = "io-uring"
version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdd7bddefd0a8833b88a4b68f90dae22c7450d11b354198baee3874fd811b344"
dependencies = [
"bitflags 2.10.0",
"cfg-if",
"libc",
]
[[package]] [[package]]
name = "ipnet" name = "ipnet"
version = "2.11.0" version = "2.11.0"
@@ -1517,6 +1477,12 @@ dependencies = [
"redox_syscall", "redox_syscall",
] ]
[[package]]
name = "linux-raw-sys"
version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
version = "0.11.0" version = "0.11.0"
@@ -1543,15 +1509,26 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]] [[package]]
name = "mac-notification-sys" name = "mac-notification-sys"
version = "0.6.8" version = "0.6.1"
source = "git+https://github.com/h4llow3En/mac-notification-sys#7798ad033f3422b0fc9cdd25c17d3c400f4b7ef0" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64"
dependencies = [ dependencies = [
"cc", "cc",
"objc2", "dirs-next",
"objc2-foundation", "objc-foundation",
"objc_id",
"time", "time",
] ]
[[package]]
name = "malloc_buf"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "matchers" name = "matchers"
version = "0.2.0" version = "0.2.0"
@@ -1619,6 +1596,18 @@ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]]
name = "nix"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags 2.10.0",
"cfg-if",
"cfg_aliases",
"libc",
]
[[package]] [[package]]
name = "nix" name = "nix"
version = "0.30.1" version = "0.30.1"
@@ -1695,12 +1684,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]] [[package]]
name = "objc2" name = "objc"
version = "0.6.3" version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
dependencies = [ dependencies = [
"objc2-encode", "malloc_buf",
]
[[package]]
name = "objc-foundation"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
dependencies = [
"block",
"objc",
"objc_id",
] ]
[[package]] [[package]]
@@ -1710,27 +1710,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"dispatch2",
"objc2",
]
[[package]]
name = "objc2-encode"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
[[package]]
name = "objc2-foundation"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
dependencies = [
"bitflags 2.10.0",
"block2",
"libc",
"objc2",
"objc2-core-foundation",
] ]
[[package]] [[package]]
@@ -1743,6 +1722,15 @@ dependencies = [
"objc2-core-foundation", "objc2-core-foundation",
] ]
[[package]]
name = "objc_id"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
dependencies = [
"objc",
]
[[package]] [[package]]
name = "object" name = "object"
version = "0.37.3" version = "0.37.3"
@@ -1864,7 +1852,7 @@ dependencies = [
"concurrent-queue", "concurrent-queue",
"hermit-abi", "hermit-abi",
"pin-project-lite", "pin-project-lite",
"rustix", "rustix 1.1.2",
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
@@ -1940,6 +1928,15 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "quick-xml"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "quick-xml" name = "quick-xml"
version = "0.37.5" version = "0.37.5"
@@ -2066,6 +2063,17 @@ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
] ]
[[package]]
name = "redox_users"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom 0.2.16",
"libredox",
"thiserror 1.0.69",
]
[[package]] [[package]]
name = "redox_users" name = "redox_users"
version = "0.5.2" version = "0.5.2"
@@ -2079,9 +2087,9 @@ dependencies = [
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.12.2" version = "1.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
@@ -2126,7 +2134,6 @@ dependencies = [
"futures-channel", "futures-channel",
"futures-core", "futures-core",
"futures-util", "futures-util",
"h2",
"http", "http",
"http-body", "http-body",
"http-body-util", "http-body-util",
@@ -2226,7 +2233,7 @@ dependencies = [
"serde_json", "serde_json",
"serde_yaml", "serde_yaml",
"siphasher", "siphasher",
"toml 0.8.23", "toml",
"triomphe", "triomphe",
] ]
@@ -2261,6 +2268,19 @@ dependencies = [
"semver", "semver",
] ]
[[package]]
name = "rustix"
version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
"bitflags 2.10.0",
"errno",
"libc",
"linux-raw-sys 0.4.15",
"windows-sys 0.59.0",
]
[[package]] [[package]]
name = "rustix" name = "rustix"
version = "1.1.2" version = "1.1.2"
@@ -2270,7 +2290,7 @@ dependencies = [
"bitflags 2.10.0", "bitflags 2.10.0",
"errno", "errno",
"libc", "libc",
"linux-raw-sys", "linux-raw-sys 0.11.0",
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
@@ -2343,16 +2363,16 @@ dependencies = [
[[package]] [[package]]
name = "self_update" name = "self_update"
version = "0.42.0" version = "0.40.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d832c086ece0dacc29fb2947bb4219b8f6e12fe9e40b7108f9e57c4224e47b5c" checksum = "4e4997484b55df069a4773d822715695b2cc27b23829eca2a4b41690e948bdeb"
dependencies = [ dependencies = [
"either", "either",
"flate2", "flate2",
"hyper", "hyper",
"indicatif", "indicatif",
"log", "log",
"quick-xml", "quick-xml 0.23.1",
"regex", "regex",
"reqwest", "reqwest",
"self-replace", "self-replace",
@@ -2434,15 +2454,6 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "serde_spanned"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
dependencies = [
"serde_core",
]
[[package]] [[package]]
name = "serde_urlencoded" name = "serde_urlencoded"
version = "0.7.1" version = "0.7.1"
@@ -2592,22 +2603,23 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]] [[package]]
name = "strum" name = "strum"
version = "0.27.2" version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
dependencies = [ dependencies = [
"strum_macros", "strum_macros",
] ]
[[package]] [[package]]
name = "strum_macros" name = "strum_macros"
version = "0.27.2" version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustversion",
"syn 2.0.110", "syn 2.0.110",
] ]
@@ -2699,7 +2711,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9"
dependencies = [ dependencies = [
"quick-xml", "quick-xml 0.37.5",
"thiserror 2.0.17", "thiserror 2.0.17",
"windows 0.61.3", "windows 0.61.3",
"windows-version", "windows-version",
@@ -2707,15 +2719,14 @@ dependencies = [
[[package]] [[package]]
name = "tempfile" name = "tempfile"
version = "3.23.0" version = "3.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
dependencies = [ dependencies = [
"cfg-if",
"fastrand", "fastrand",
"getrandom 0.3.4", "rustix 0.38.44",
"once_cell", "windows-sys 0.52.0",
"rustix",
"windows-sys 0.61.2",
] ]
[[package]] [[package]]
@@ -2834,17 +2845,20 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.48.0" version = "1.47.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" checksum = "36cde6a64bcbb101731e7db34c087674206357a5316e6f695f5fef730bd711de"
dependencies = [ dependencies = [
"backtrace",
"bytes", "bytes",
"io-uring",
"libc", "libc",
"mio", "mio",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"slab",
"socket2", "socket2",
"windows-sys 0.61.2", "windows-sys 0.59.0",
] ]
[[package]] [[package]]
@@ -2857,19 +2871,6 @@ dependencies = [
"tokio", "tokio",
] ]
[[package]]
name = "tokio-util"
version = "0.7.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.8.23" version = "0.8.23"
@@ -2877,26 +2878,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [ dependencies = [
"serde", "serde",
"serde_spanned 0.6.9", "serde_spanned",
"toml_datetime 0.6.11", "toml_datetime 0.6.11",
"toml_edit 0.22.27", "toml_edit 0.22.27",
] ]
[[package]]
name = "toml"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
dependencies = [
"indexmap",
"serde_core",
"serde_spanned 1.0.3",
"toml_datetime 0.7.3",
"toml_parser",
"toml_writer",
"winnow",
]
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.6.11" version = "0.6.11"
@@ -2923,7 +2909,7 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"serde", "serde",
"serde_spanned 0.6.9", "serde_spanned",
"toml_datetime 0.6.11", "toml_datetime 0.6.11",
"toml_write", "toml_write",
"winnow", "winnow",
@@ -2956,23 +2942,18 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
[[package]]
name = "toml_writer"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]] [[package]]
name = "topgrade" name = "topgrade"
version = "16.4.2" version = "16.2.1"
dependencies = [ dependencies = [
"base64ct", "base64ct",
"cfg-if",
"chrono", "chrono",
"clap", "clap",
"clap_complete", "clap_complete",
"clap_mangen", "clap_mangen",
"color-eyre", "color-eyre",
"console 0.16.1", "console",
"etcetera", "etcetera",
"futures", "futures",
"glob", "glob",
@@ -2983,7 +2964,7 @@ dependencies = [
"is_elevated", "is_elevated",
"jetbrains-toolbox-updater", "jetbrains-toolbox-updater",
"merge", "merge",
"nix", "nix 0.29.0",
"notify-rust", "notify-rust",
"parselnk", "parselnk",
"regex", "regex",
@@ -2999,9 +2980,9 @@ dependencies = [
"strum", "strum",
"sys-locale", "sys-locale",
"tempfile", "tempfile",
"thiserror 2.0.17", "thiserror 1.0.69",
"tokio", "tokio",
"toml 0.9.8", "toml",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
"walkdir", "walkdir",
@@ -3369,12 +3350,13 @@ dependencies = [
[[package]] [[package]]
name = "which" name = "which"
version = "8.0.0" version = "6.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f"
dependencies = [ dependencies = [
"env_home", "either",
"rustix", "home",
"rustix 0.38.44",
"winsafe", "winsafe",
] ]
@@ -3613,6 +3595,15 @@ dependencies = [
"windows-link 0.2.1", "windows-link 0.2.1",
] ]
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets 0.48.5",
]
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.52.0" version = "0.52.0"
@@ -3649,6 +3640,21 @@ dependencies = [
"windows-link 0.2.1", "windows-link 0.2.1",
] ]
[[package]]
name = "windows-targets"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]] [[package]]
name = "windows-targets" name = "windows-targets"
version = "0.52.6" version = "0.52.6"
@@ -3709,6 +3715,12 @@ dependencies = [
"windows-link 0.2.1", "windows-link 0.2.1",
] ]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]] [[package]]
name = "windows_aarch64_gnullvm" name = "windows_aarch64_gnullvm"
version = "0.52.6" version = "0.52.6"
@@ -3721,6 +3733,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.52.6" version = "0.52.6"
@@ -3733,6 +3751,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.52.6" version = "0.52.6"
@@ -3757,6 +3781,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.52.6" version = "0.52.6"
@@ -3769,6 +3799,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.52.6" version = "0.52.6"
@@ -3781,6 +3817,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
version = "0.52.6" version = "0.52.6"
@@ -3793,6 +3835,12 @@ version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.52.6" version = "0.52.6"
@@ -3839,7 +3887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
dependencies = [ dependencies = [
"libc", "libc",
"rustix", "rustix 1.1.2",
] ]
[[package]] [[package]]
@@ -3891,7 +3939,7 @@ dependencies = [
"futures-core", "futures-core",
"futures-lite", "futures-lite",
"hex", "hex",
"nix", "nix 0.30.1",
"ordered-stream", "ordered-stream",
"serde", "serde",
"serde_repr", "serde_repr",
@@ -4014,20 +4062,15 @@ dependencies = [
[[package]] [[package]]
name = "zip" name = "zip"
version = "2.4.2" version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
dependencies = [ dependencies = [
"arbitrary", "byteorder",
"crc32fast", "crc32fast",
"crossbeam-utils", "crossbeam-utils",
"displaydoc",
"flate2", "flate2",
"indexmap",
"memchr",
"thiserror 2.0.17",
"time", "time",
"zopfli",
] ]
[[package]] [[package]]
@@ -4041,18 +4084,6 @@ dependencies = [
"thiserror 2.0.17", "thiserror 2.0.17",
] ]
[[package]]
name = "zopfli"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
dependencies = [
"bumpalo",
"crc32fast",
"log",
"simd-adler32",
]
[[package]] [[package]]
name = "zvariant" name = "zvariant"
version = "5.8.0" version = "5.8.0"

View File

@@ -3,10 +3,10 @@ name = "topgrade"
description = "Upgrade all the things" description = "Upgrade all the things"
categories = ["os"] categories = ["os"]
keywords = ["upgrade", "update"] keywords = ["upgrade", "update"]
license = "GPL-3.0-or-later" license = "GPL-3.0"
repository = "https://github.com/topgrade-rs/topgrade" repository = "https://github.com/topgrade-rs/topgrade"
rust-version = "1.84.1" rust-version = "1.84.1"
version = "16.4.2" version = "16.2.1"
authors = ["Roey Darwish Dror <roey.ghost@gmail.com>", "Thomas Schönauer <t.schoenauer@hgs-wt.at>"] authors = ["Roey Darwish Dror <roey.ghost@gmail.com>", "Thomas Schönauer <t.schoenauer@hgs-wt.at>"]
exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"] exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"]
edition = "2021" edition = "2021"
@@ -14,25 +14,26 @@ edition = "2021"
readme = "README.md" readme = "README.md"
[dependencies] [dependencies]
home = "=0.5.11" home = "~0.5,<0.5.11"
etcetera = "=0.10.0" etcetera = "~0.8"
serde = { version = "~1.0", features = ["derive"] } serde = { version = "~1.0", features = ["derive"] }
toml = { version = "=0.9.8", features = ["preserve_order"] } toml = "0.8"
which_crate = { version = "~8.0", package = "which" } which_crate = { version = "~6.0", package = "which" }
shellexpand = "~3.1" shellexpand = "~3.1"
clap = { version = "~4.5", features = ["cargo", "derive"] } clap = { version = "~4.5", features = ["cargo", "derive"] }
clap_complete = "~4.5" clap_complete = "~4.5"
clap_mangen = "~0.2" clap_mangen = "~0.2"
walkdir = "~2.5" walkdir = "~2.5"
console = "~0.16" console = "~0.15"
chrono = "~0.4" chrono = "~0.4"
glob = "~0.3" glob = "~0.3"
strum = { version = "~0.27", features = ["derive"] } strum = { version = "~0.26", features = ["derive"] }
thiserror = "~2.0" thiserror = "~1.0"
tempfile = "~3.23" tempfile = "~3.10"
tokio = { version = "~1.48", features = ["process", "rt-multi-thread"] } cfg-if = "~1.0"
tokio = { version = "~1.47", features = ["process", "rt-multi-thread"] }
futures = "~0.3" futures = "~0.3"
regex = "~1.12" regex = "~1.10"
semver = "~1.0" semver = "~1.0"
shell-words = "~1.1" shell-words = "~1.1"
color-eyre = "~0.6" color-eyre = "~0.6"
@@ -49,12 +50,9 @@ indexmap = { version = "2.9.0", features = ["serde"] }
serde_json = "1.0.145" serde_json = "1.0.145"
# Temporary transitive dependency pins # Temporary transitive dependency pins
ignore = "=0.4.23" ignore = "=0.4.23"
globset = "=0.4.16" globset = "=0.4.18"
base64ct = "<1.8.0" base64ct = "<1.8.0"
[patch.crates-io]
mac-notification-sys = { git = "https://github.com/h4llow3En/mac-notification-sys" }
[package.metadata.generate-rpm] [package.metadata.generate-rpm]
assets = [{ source = "target/release/topgrade", dest = "/usr/bin/topgrade" }] assets = [{ source = "target/release/topgrade", dest = "/usr/bin/topgrade" }]
@@ -83,14 +81,14 @@ assets = [
] ]
[target.'cfg(unix)'.dependencies] [target.'cfg(unix)'.dependencies]
nix = { version = "~0.30", features = ["hostname", "signal", "user"] } nix = { version = "~0.29", features = ["hostname", "signal", "user"] }
rust-ini = "~0.21" rust-ini = "~0.21"
self_update_crate = { version = "~0.42", default-features = false, optional = true, package = "self_update", features = ["archive-tar", "compression-flate2", "rustls"] } self_update_crate = { version = "~0.40", default-features = false, optional = true, package = "self_update", features = ["archive-tar", "compression-flate2", "rustls"] }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
is_elevated = "~0.1" is_elevated = "~0.1"
parselnk = "~0.1" parselnk = "~0.1"
self_update_crate = { version = "~0.42", default-features = false, optional = true, package = "self_update", features = ["archive-zip", "compression-zip-deflate", "rustls"] } self_update_crate = { version = "~0.40", default-features = false, optional = true, package = "self_update", features = ["archive-zip", "compression-zip-deflate", "rustls"] }
windows = { version = "~0.62", features = ["Win32_System_Console"] } windows = { version = "~0.62", features = ["Win32_System_Console"] }
windows-registry = "~0.6" windows-registry = "~0.6"

View File

@@ -342,10 +342,6 @@
# Specify the runtime to use for containers (default: "docker", allowed values: "docker", "podman") # Specify the runtime to use for containers (default: "docker", allowed values: "docker", "podman")
# runtime = "podman" # runtime = "podman"
# Run 'docker system prune' to clean up unused containers, networks, and build cache
# (default: false)
# system_prune = false
[lensfun] [lensfun]
# If disabled, Topgrade invokes `lensfunupdatedata` without root privilege, # If disabled, Topgrade invokes `lensfunupdatedata` without root privilege,
# then the update will be only available to you. Otherwise, `sudo` is required, # then the update will be only available to you. Otherwise, `sudo` is required,

View File

@@ -60,7 +60,6 @@ pub struct Containers {
#[merge(strategy = crate::utils::merge_strategies::vec_prepend_opt)] #[merge(strategy = crate::utils::merge_strategies::vec_prepend_opt)]
ignored_containers: Option<Vec<String>>, ignored_containers: Option<Vec<String>>,
runtime: Option<ContainerRuntime>, runtime: Option<ContainerRuntime>,
system_prune: Option<bool>,
} }
#[derive(Deserialize, Default, Debug, Merge)] #[derive(Deserialize, Default, Debug, Merge)]
@@ -204,10 +203,9 @@ pub struct Brew {
fetch_head: Option<bool>, fetch_head: Option<bool>,
} }
#[derive(Debug, Deserialize, Clone, Copy, Default)] #[derive(Debug, Deserialize, Clone, Copy)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum ArchPackageManager { pub enum ArchPackageManager {
#[default]
Autodetect, Autodetect,
Aura, Aura,
GarudaUpdate, GarudaUpdate,
@@ -219,10 +217,9 @@ pub enum ArchPackageManager {
Yay, Yay,
} }
#[derive(Clone, Copy, Debug, Deserialize, Default)] #[derive(Clone, Copy, Debug, Deserialize)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum ContainerRuntime { pub enum ContainerRuntime {
#[default] // defaults to a popular choice
Docker, Docker,
Podman, Podman,
} }
@@ -360,11 +357,10 @@ pub struct Misc {
show_distribution_summary: Option<bool>, show_distribution_summary: Option<bool>,
} }
#[derive(Clone, Copy, Debug, Deserialize, ValueEnum, Default)] #[derive(Clone, Copy, Debug, Deserialize, ValueEnum)]
#[clap(rename_all = "snake_case")] #[clap(rename_all = "snake_case")]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum TmuxSessionMode { pub enum TmuxSessionMode {
#[default]
AttachIfNotInSession, AttachIfNotInSession,
AttachAlways, AttachAlways,
} }
@@ -959,16 +955,7 @@ impl Config {
.containers .containers
.as_ref() .as_ref()
.and_then(|containers| containers.runtime) .and_then(|containers| containers.runtime)
.unwrap_or_default() .unwrap_or(ContainerRuntime::Docker) // defaults to a popular choice
}
/// Whether to run system prune for containers.
pub fn containers_system_prune(&self) -> bool {
self.config_file
.containers
.as_ref()
.and_then(|containers| containers.system_prune)
.unwrap_or(false)
} }
/// Tell whether the specified step should run. /// Tell whether the specified step should run.
@@ -1040,7 +1027,7 @@ impl Config {
.misc .misc
.as_ref() .as_ref()
.and_then(|misc| misc.tmux_session_mode) .and_then(|misc| misc.tmux_session_mode)
.unwrap_or_default() .unwrap_or(TmuxSessionMode::AttachIfNotInSession)
} }
/// Tell whether we should perform cleanup steps. /// Tell whether we should perform cleanup steps.
@@ -1294,7 +1281,7 @@ impl Config {
.vim .vim
.as_ref() .as_ref()
.and_then(|c| c.force_plug_update) .and_then(|c| c.force_plug_update)
.unwrap_or(false) .unwrap_or_default()
} }
/// Whether to send a desktop notification at the beginning of every step /// Whether to send a desktop notification at the beginning of every step
@@ -1367,7 +1354,7 @@ impl Config {
.linux .linux
.as_ref() .as_ref()
.and_then(|s| s.arch_package_manager) .and_then(|s| s.arch_package_manager)
.unwrap_or_default() .unwrap_or(ArchPackageManager::Autodetect)
} }
/// Extra yay arguments /// Extra yay arguments
@@ -1892,24 +1879,4 @@ mod test {
config.opt = CommandLineArgs::parse_from(["topgrade", "--remote-host-limit", "other_hostname"]); config.opt = CommandLineArgs::parse_from(["topgrade", "--remote-host-limit", "other_hostname"]);
assert!(!config.should_execute_remote(Ok("hostname".to_string()), "user@remote_hostname")); assert!(!config.should_execute_remote(Ok("hostname".to_string()), "user@remote_hostname"));
} }
/// Ensure that custom commands are stored in insertion order.
#[test]
fn test_custom_commands_order() {
let toml_str = r#"
[commands]
z = "cmd_z"
y = "cmd_y"
x = "cmd_x"
"#;
let order: Vec<_> = toml::from_str::<ConfigFile>(toml_str)
.expect("toml parse error")
.commands
.expect("commands field missing")
.keys()
.cloned()
.collect();
assert_eq!(order, vec!["z", "y", "x"]);
}
} }

View File

@@ -12,6 +12,7 @@ use clap::{crate_version, Parser};
use color_eyre::eyre::Context; use color_eyre::eyre::Context;
use color_eyre::eyre::Result; use color_eyre::eyre::Result;
use console::Key; use console::Key;
use etcetera::base_strategy::BaseStrategy;
#[cfg(windows)] #[cfg(windows)]
use etcetera::base_strategy::Windows; use etcetera::base_strategy::Windows;
#[cfg(unix)] #[cfg(unix)]
@@ -208,19 +209,7 @@ fn run() -> Result<()> {
} }
for step in step::default_steps() { for step in step::default_steps() {
match step.run(&mut runner, &ctx) { step.run(&mut runner, &ctx)?
Ok(()) => (),
Err(error)
if error
.downcast_ref::<io::Error>()
.is_some_and(|e| e.kind() == io::ErrorKind::Interrupted) =>
{
println!();
debug!("Interrupted (possibly with 'q' during retry prompt). Printing summary.");
break;
}
Err(error) => return Err(error),
}
} }
let mut failed = false; let mut failed = false;

View File

@@ -1,15 +1,14 @@
use color_eyre::eyre::{Result, WrapErr}; use color_eyre::eyre::Result;
use rust_i18n::t; use rust_i18n::t;
use std::borrow::Cow; use std::borrow::Cow;
use std::fmt::Debug; use std::fmt::Debug;
use std::io;
use tracing::debug; use tracing::debug;
use crate::ctrlc; use crate::ctrlc;
use crate::error::{DryRun, MissingSudo, SkipStep}; use crate::error::{DryRun, MissingSudo, SkipStep};
use crate::execution_context::ExecutionContext; use crate::execution_context::ExecutionContext;
use crate::step::Step; use crate::step::Step;
use crate::terminal::{print_error, print_warning, should_retry, ShouldRetry}; use crate::terminal::{print_error, print_warning, should_retry};
pub enum StepResult { pub enum StepResult {
Success, Success,
@@ -99,28 +98,21 @@ impl<'a> Runner<'a> {
let should_ask = interrupted || !(self.ctx.config().no_retry() || ignore_failure); let should_ask = interrupted || !(self.ctx.config().no_retry() || ignore_failure);
let should_retry = if should_ask { let should_retry = if should_ask {
print_error(&key, format!("{e:?}")); print_error(&key, format!("{e:?}"));
should_retry(key.as_ref())? should_retry(interrupted, key.as_ref())?
} else { } else {
ShouldRetry::No false
}; };
match should_retry { if !should_retry {
ShouldRetry::No | ShouldRetry::Quit => { self.push_result(
self.push_result( key,
key, if ignore_failure {
if ignore_failure { StepResult::Ignored
StepResult::Ignored } else {
} else { StepResult::Failure
StepResult::Failure },
}, );
); break;
if let ShouldRetry::Quit = should_retry {
return Err(io::Error::from(io::ErrorKind::Interrupted))
.context("Quit from user input");
}
break;
}
ShouldRetry::Yes => (),
} }
} }
} }

View File

@@ -11,7 +11,7 @@ use tracing::{debug, error, warn};
use wildmatch::WildMatch; use wildmatch::WildMatch;
use crate::command::CommandExt; use crate::command::CommandExt;
use crate::error::{SkipStep, TopgradeError}; use crate::error::{self, SkipStep, TopgradeError};
use crate::terminal::print_separator; use crate::terminal::print_separator;
use crate::{execution_context::ExecutionContext, utils::require}; use crate::{execution_context::ExecutionContext, utils::require};
use rust_i18n::t; use rust_i18n::t;
@@ -185,6 +185,7 @@ pub fn run_containers(ctx: &ExecutionContext) -> Result<()> {
)); ));
} }
let mut success = true;
let containers = let containers =
list_containers(&crt, ctx.config().containers_ignored_tags()).context("Failed to list Docker containers")?; list_containers(&crt, ctx.config().containers_ignored_tags()).context("Failed to list Docker containers")?;
debug!("Containers to inspect: {:?}", containers); debug!("Containers to inspect: {:?}", containers);
@@ -219,21 +220,22 @@ pub fn run_containers(ctx: &ExecutionContext) -> Result<()> {
continue; continue;
} }
return Err(e); success = false;
} }
} }
if ctx.config().containers_system_prune() { if ctx.config().cleanup() {
// Run system prune to clean up unused containers, networks, and build cache
ctx.execute(&crt)
.args(["system", "prune", "--force"])
.status_checked()?
// Only run `image prune` if we don't run `system prune`
} else if ctx.config().cleanup() {
// Remove dangling images // Remove dangling images
debug!("Removing dangling images"); debug!("Removing dangling images");
ctx.execute(&crt).args(["image", "prune", "-f"]).status_checked()? if let Err(e) = ctx.execute(&crt).args(["image", "prune", "-f"]).status_checked() {
error!("Removing dangling images failed: {}", e);
success = false;
}
} }
Ok(()) if success {
Ok(())
} else {
Err(eyre!(error::StepFailed))
}
} }

View File

@@ -282,17 +282,6 @@ pub fn run_elan(ctx: &ExecutionContext) -> Result<()> {
print_separator("elan"); print_separator("elan");
let version_output = ctx.execute(&elan).arg("--version").output_checked_utf8()?;
let version_string = version_output.stdout.split_whitespace().nth(1).ok_or_else(|| {
eyre!(output_changed_message!(
"elan --version",
"Expected version after 'elan '"
))
})?;
let version = Version::parse(version_string)
.wrap_err_with(|| output_changed_message!("elan --version", "Invalid version"))?;
debug!("Detected elan version as: {}", version);
let disabled_error_msg = "self-update is disabled"; let disabled_error_msg = "self-update is disabled";
let executor_output = ctx.execute(&elan).args(["self", "update"]).output()?; let executor_output = ctx.execute(&elan).args(["self", "update"]).output()?;
match executor_output { match executor_output {
@@ -321,12 +310,7 @@ pub fn run_elan(ctx: &ExecutionContext) -> Result<()> {
ExecutorOutput::Dry => { /* nothing needed because in a dry run */ } ExecutorOutput::Dry => { /* nothing needed because in a dry run */ }
} }
// In elan 4.0.0, `elan update` was removed, as toolchains are now updated automatically ctx.execute(&elan).arg("update").status_checked()
if version < Version::new(4, 0, 0) {
ctx.execute(&elan).arg("update").status_checked()?;
}
Ok(())
} }
pub fn run_juliaup(ctx: &ExecutionContext) -> Result<()> { pub fn run_juliaup(ctx: &ExecutionContext) -> Result<()> {
@@ -889,11 +873,12 @@ pub fn run_tldr(ctx: &ExecutionContext) -> Result<()> {
} }
pub fn run_tlmgr_update(ctx: &ExecutionContext) -> Result<()> { pub fn run_tlmgr_update(ctx: &ExecutionContext) -> Result<()> {
if cfg!(any(target_os = "linux", target_os = "android")) && !ctx.config().enable_tlmgr_linux() { cfg_if::cfg_if! {
return Err(SkipStep(String::from( if #[cfg(any(target_os = "linux", target_os = "android"))] {
"tlmgr must be explicitly enabled in the configuration to run in Android/Linux", if !ctx.config().enable_tlmgr_linux() {
)) return Err(SkipStep(String::from("tlmgr must be explicitly enabled in the configuration to run in Android/Linux")).into());
.into()); }
}
} }
let tlmgr = require("tlmgr")?; let tlmgr = require("tlmgr")?;
@@ -998,19 +983,23 @@ pub fn run_composer_update(ctx: &ExecutionContext) -> Result<()> {
print_separator(t!("Composer")); print_separator(t!("Composer"));
if ctx.config().composer_self_update() { if ctx.config().composer_self_update() {
if cfg!(unix) { cfg_if::cfg_if! {
// If self-update fails without sudo then there's probably an update if #[cfg(unix)] {
let has_update = match ctx.execute(&composer).arg("self-update").output()? { // If self-update fails without sudo then there's probably an update
ExecutorOutput::Wet(output) => !output.status.success(), let has_update = match ctx.execute(&composer).arg("self-update").output()? {
_ => false, ExecutorOutput::Wet(output) => !output.status.success(),
}; _ => false
};
if has_update { if has_update {
let sudo = ctx.require_sudo()?; let sudo = ctx.require_sudo()?;
sudo.execute(ctx, &composer)?.arg("self-update").status_checked()?; sudo.execute(ctx, &composer)?
.arg("self-update")
.status_checked()?;
}
} else {
ctx.execute(&composer).arg("self-update").status_checked()?;
} }
} else {
ctx.execute(&composer).arg("self-update").status_checked()?;
} }
} }

View File

@@ -78,8 +78,6 @@ impl Distribution {
Some("neon") => Distribution::KDENeon, Some("neon") => Distribution::KDENeon,
Some("openmandriva") => Distribution::OpenMandriva, Some("openmandriva") => Distribution::OpenMandriva,
Some("pclinuxos") => Distribution::PCLinuxOS, Some("pclinuxos") => Distribution::PCLinuxOS,
Some(id) if id.starts_with("origami") => Distribution::FedoraImmutable,
_ => { _ => {
if let Some(name) = name { if let Some(name) = name {
if name.contains("Vanilla") { if name.contains("Vanilla") {
@@ -1343,11 +1341,4 @@ mod tests {
fn test_cachyos() { fn test_cachyos() {
test_template(include_str!("os_release/cachyos"), Distribution::Arch); test_template(include_str!("os_release/cachyos"), Distribution::Arch);
} }
#[test]
fn test_origami() {
test_template(include_str!("os_release/origami"), Distribution::FedoraImmutable);
test_template(include_str!("os_release/origami-nvidia"), Distribution::FedoraImmutable);
test_template(include_str!("os_release/origami-test"), Distribution::FedoraImmutable);
}
} }

View File

@@ -1,23 +0,0 @@
NAME="Origami Linux"
VERSION="43.20251117.0 (COSMIC Atomic)"
RELEASE_TYPE="stable"
ID="origami-linux"
VERSION_ID="43"
VERSION_CODENAME=""
PRETTY_NAME="Origami 折り紙"
ANSI_COLOR="0;38;2;60;110;180"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:fedoraproject:fedora:43"
DEFAULT_HOSTNAME="origami"
HOME_URL="https://origami.wf/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f43/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://gitlab.com/groups/origami-linux/-/issues"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION="43"
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION="43"
SUPPORT_END="2026-12-02"
VARIANT="COSMIC Atomic"
VARIANT_ID="cosmic-atomic"
OSTREE_VERSION="43.20251117.0"

View File

@@ -1,23 +0,0 @@
NAME="Origami Linux Nvidia"
VERSION="43.20251117.0 (COSMIC Atomic)"
RELEASE_TYPE="stable"
ID="origami-linux-nvidia"
VERSION_ID="43"
VERSION_CODENAME=""
PRETTY_NAME="Origami 折り紙"
ANSI_COLOR="0;38;2;60;110;180"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:fedoraproject:fedora:43"
DEFAULT_HOSTNAME="origami"
HOME_URL="https://origami.wf/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f43/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://gitlab.com/groups/origami-linux/-/issues"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION="43"
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION="43"
SUPPORT_END="2026-12-02"
VARIANT="COSMIC Atomic"
VARIANT_ID="cosmic-atomic"
OSTREE_VERSION="43.20251117.0"

View File

@@ -1,23 +0,0 @@
NAME="Origami Linux Test"
VERSION="43.20251117.0 (COSMIC Atomic)"
RELEASE_TYPE="stable"
ID="origami-linux-test"
VERSION_ID="43"
VERSION_CODENAME=""
PRETTY_NAME="Origami 折り紙"
ANSI_COLOR="0;38;2;60;110;180"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:fedoraproject:fedora:43"
DEFAULT_HOSTNAME="origami"
HOME_URL="https://origami.wf/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f43/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://gitlab.com/groups/origami-linux/-/issues"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION="43"
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION="43"
SUPPORT_END="2026-12-02"
VARIANT="COSMIC Atomic"
VARIANT_ID="cosmic-atomic"
OSTREE_VERSION="43.20251117.0"

View File

@@ -201,11 +201,10 @@ impl Terminal {
} }
} }
} }
#[allow(unused_variables)] #[allow(unused_variables)]
fn should_retry(&mut self, step_name: &str) -> eyre::Result<ShouldRetry> { fn should_retry(&mut self, interrupted: bool, step_name: &str) -> eyre::Result<bool> {
if self.width.is_none() { if self.width.is_none() {
return Ok(ShouldRetry::No); return Ok(false);
} }
if self.set_title { if self.set_title {
@@ -224,7 +223,7 @@ impl Terminal {
let answer = loop { let answer = loop {
match self.term.read_key() { match self.term.read_key() {
Ok(Key::Char('y' | 'Y')) => break Ok(ShouldRetry::Yes), Ok(Key::Char('y' | 'Y')) => break Ok(true),
Ok(Key::Char('s' | 'S')) => { Ok(Key::Char('s' | 'S')) => {
println!( println!(
"\n\n{}\n", "\n\n{}\n",
@@ -233,16 +232,16 @@ impl Terminal {
if let Err(err) = run_shell().context("Failed to run shell") { if let Err(err) = run_shell().context("Failed to run shell") {
self.term.write_fmt(format_args!("{err:?}\n{prompt_inner}")).ok(); self.term.write_fmt(format_args!("{err:?}\n{prompt_inner}")).ok();
} else { } else {
break Ok(ShouldRetry::Yes); break Ok(true);
} }
} }
Ok(Key::Char('n' | 'N') | Key::Enter) => break Ok(ShouldRetry::No), Ok(Key::Char('n' | 'N') | Key::Enter) => break Ok(false),
Err(e) => { Err(e) => {
error!("Error reading from terminal: {}", e); error!("Error reading from terminal: {}", e);
break Ok(ShouldRetry::No); break Ok(false);
} }
Ok(Key::Char('q' | 'Q')) => { Ok(Key::Char('q' | 'Q')) => {
break Ok(ShouldRetry::Quit); return Err(io::Error::from(io::ErrorKind::Interrupted)).context("Quit from user input")
} }
_ => (), _ => (),
} }
@@ -258,21 +257,14 @@ impl Terminal {
} }
} }
#[derive(Clone, Copy)]
pub enum ShouldRetry {
Yes,
No,
Quit,
}
impl Default for Terminal { impl Default for Terminal {
fn default() -> Self { fn default() -> Self {
Self::new() Self::new()
} }
} }
pub fn should_retry(step_name: &str) -> eyre::Result<ShouldRetry> { pub fn should_retry(interrupted: bool, step_name: &str) -> eyre::Result<bool> {
TERMINAL.lock().unwrap().should_retry(step_name) TERMINAL.lock().unwrap().should_retry(interrupted, step_name)
} }
pub fn print_separator<P: AsRef<str>>(message: P) { pub fn print_separator<P: AsRef<str>>(message: P) {