Compare commits
18 Commits
v16.2.0
...
renovate/i
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9c8f51153 | ||
|
|
84a50afa83 | ||
|
|
b13c1bd2d7 | ||
|
|
7749f41d56 | ||
|
|
593a2a33d9 | ||
|
|
4f693aeaf3 | ||
|
|
c3d34184d0 | ||
|
|
4aa224de87 | ||
|
|
320b13c06b | ||
|
|
907d778c55 | ||
|
|
f3fccb86c0 | ||
|
|
bb4afb71e9 | ||
|
|
ec8d30f634 | ||
|
|
50d318641a | ||
|
|
c5267f6087 | ||
|
|
d80e8f64d1 | ||
|
|
c6f2e0cc44 | ||
|
|
99c3e8af26 |
24
.github/dependabot.yml
vendored
24
.github/dependabot.yml
vendored
@@ -1,24 +0,0 @@
|
|||||||
# Set update schedule for GitHub Actions
|
|
||||||
|
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
|
|
||||||
- package-ecosystem: cargo
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
day: "monday"
|
|
||||||
time: "06:00"
|
|
||||||
timezone: "UTC"
|
|
||||||
versioning-strategy: increase
|
|
||||||
labels: ["dependencies", "cargo"]
|
|
||||||
commit-message:
|
|
||||||
prefix: "deps(cargo)"
|
|
||||||
include: "scope"
|
|
||||||
groups:
|
|
||||||
cargo-minor-patch:
|
|
||||||
update-types: ["minor", "patch"]
|
|
||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/check_i18n.yml
vendored
2
.github/workflows/check_i18n.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
security-events: write
|
security-events: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5.0.0
|
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@v4.31.2
|
uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
|
||||||
with:
|
with:
|
||||||
sarif_file: devskim-results.sarif
|
sarif_file: devskim-results.sarif
|
||||||
|
|||||||
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5.0.0
|
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@v5.0.0
|
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@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
|
|||||||
17
.github/workflows/create_release_assets.yml
vendored
17
.github/workflows/create_release_assets.yml
vendored
@@ -8,6 +8,10 @@ permissions:
|
|||||||
# Write permissions to call the repository dispatch
|
# Write permissions to call the repository dispatch
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Publish release files for CD native environments
|
# Publish release files for CD native environments
|
||||||
native_build:
|
native_build:
|
||||||
@@ -29,7 +33,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
tag: ${{ github.event.client_payload.tag }}
|
tag: ${{ github.event.client_payload.tag }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -71,9 +75,10 @@ jobs:
|
|||||||
mkdir -p "$dir"
|
mkdir -p "$dir"
|
||||||
echo "DEPLOY_DIR=$dir" >> $GITHUB_ENV
|
echo "DEPLOY_DIR=$dir" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Generate shell completions
|
- name: Generate man page and shell completions
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
"$BIN" --gen-manpage > "$DEPLOY_DIR/topgrade.1"
|
||||||
"$BIN" --gen-completion bash > "$DEPLOY_DIR/topgrade.bash"
|
"$BIN" --gen-completion bash > "$DEPLOY_DIR/topgrade.bash"
|
||||||
"$BIN" --gen-completion fish > "$DEPLOY_DIR/topgrade.fish"
|
"$BIN" --gen-completion fish > "$DEPLOY_DIR/topgrade.fish"
|
||||||
"$BIN" --gen-completion zsh > "$DEPLOY_DIR/_topgrade"
|
"$BIN" --gen-completion zsh > "$DEPLOY_DIR/_topgrade"
|
||||||
@@ -132,7 +137,7 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Generate artifact attestations
|
- name: Generate artifact attestations
|
||||||
uses: actions/attest-build-provenance@v3.0.0
|
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
|
||||||
with:
|
with:
|
||||||
subject-path: assets/*
|
subject-path: assets/*
|
||||||
|
|
||||||
@@ -164,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@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -267,7 +272,7 @@ jobs:
|
|||||||
- name: Move Debian-based system package
|
- name: Move Debian-based system package
|
||||||
run: |
|
run: |
|
||||||
mkdir -p assets
|
mkdir -p assets
|
||||||
mv "target/${matrix_target}/debian/*.deb" assets
|
mv target/"${matrix_target}"/debian/*.deb assets
|
||||||
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }}
|
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
@@ -279,7 +284,7 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Generate artifact attestations
|
- name: Generate artifact attestations
|
||||||
uses: actions/attest-build-provenance@v3.0.0
|
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
|
||||||
with:
|
with:
|
||||||
subject-path: assets/*
|
subject-path: assets/*
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/dependency-review.yml
vendored
4
.github/workflows/dependency-review.yml
vendored
@@ -17,9 +17,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout Repository'
|
- name: 'Checkout Repository'
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: 'Dependency Review'
|
- name: 'Dependency Review'
|
||||||
uses: actions/dependency-review-action@40c09b7dc99638e5ddb0bfd91c1673effc064d8a # v4.8.1
|
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
|
||||||
|
|||||||
2
.github/workflows/lint_pr.yml
vendored
2
.github/workflows/lint_pr.yml
vendored
@@ -14,6 +14,6 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
pull-requests: read
|
pull-requests: read
|
||||||
steps:
|
steps:
|
||||||
- uses: amannn/action-semantic-pull-request@v6.1.1
|
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
8
.github/workflows/release-plz.yml
vendored
8
.github/workflows/release-plz.yml
vendored
@@ -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@v5
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
- name: Run release-plz
|
- name: Run release-plz
|
||||||
id: release-plz
|
id: release-plz
|
||||||
uses: release-plz/action@v0.5
|
uses: release-plz/action@d529f731ae3e89610ada96eda34e5c6ba3b12214 # v0.5
|
||||||
with:
|
with:
|
||||||
command: release
|
command: release
|
||||||
env:
|
env:
|
||||||
@@ -53,14 +53,14 @@ jobs:
|
|||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Install Rust toolchain
|
- name: Install Rust toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
- name: Run release-plz
|
- name: Run release-plz
|
||||||
uses: release-plz/action@v0.5
|
uses: release-plz/action@d529f731ae3e89610ada96eda34e5c6ba3b12214 # v0.5
|
||||||
with:
|
with:
|
||||||
command: release-pr
|
command: release-pr
|
||||||
env:
|
env:
|
||||||
|
|||||||
3
.github/workflows/release_to_homebrew.yml
vendored
3
.github/workflows/release_to_homebrew.yml
vendored
@@ -18,4 +18,5 @@ jobs:
|
|||||||
token: ${{secrets.HOMEBREW_ACCESS_TOKEN}}
|
token: ${{secrets.HOMEBREW_ACCESS_TOKEN}}
|
||||||
formula: topgrade
|
formula: topgrade
|
||||||
tag: ${{ github.event.client_payload.tag }}
|
tag: ${{ github.event.client_payload.tag }}
|
||||||
org: topgrade-rs
|
# We cannot use an org because org forks cannot give push access to maintainers, which Homebrew requires.
|
||||||
|
# org: topgrade-rs
|
||||||
|
|||||||
20
.github/workflows/release_to_pypi.yml
vendored
20
.github/workflows/release_to_pypi.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
target: [x86_64, x86, aarch64]
|
target: [x86_64, x86, aarch64]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
args: --release --out dist
|
args: --release --out dist
|
||||||
manylinux: auto
|
manylinux: auto
|
||||||
- name: Upload wheels
|
- name: Upload wheels
|
||||||
uses: actions/upload-artifact@v5.0.0
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||||
with:
|
with:
|
||||||
name: wheels-linux-${{ matrix.target }}
|
name: wheels-linux-${{ matrix.target }}
|
||||||
path: dist
|
path: dist
|
||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
target: [x64, x86]
|
target: [x64, x86]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
target: ${{ matrix.target }}
|
target: ${{ matrix.target }}
|
||||||
args: --release --out dist
|
args: --release --out dist
|
||||||
- name: Upload wheels
|
- name: Upload wheels
|
||||||
uses: actions/upload-artifact@v5.0.0
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||||
with:
|
with:
|
||||||
name: wheels-windows-${{ matrix.target }}
|
name: wheels-windows-${{ matrix.target }}
|
||||||
path: dist
|
path: dist
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
target: [x86_64, aarch64]
|
target: [x86_64, aarch64]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ jobs:
|
|||||||
target: ${{ matrix.target }}
|
target: ${{ matrix.target }}
|
||||||
args: --release --out dist
|
args: --release --out dist
|
||||||
- name: Upload wheels
|
- name: Upload wheels
|
||||||
uses: actions/upload-artifact@v5.0.0
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||||
with:
|
with:
|
||||||
name: wheels-macos-${{ matrix.target }}
|
name: wheels-macos-${{ matrix.target }}
|
||||||
path: dist
|
path: dist
|
||||||
@@ -76,7 +76,7 @@ jobs:
|
|||||||
sdist:
|
sdist:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5.0.0
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
command: sdist
|
command: sdist
|
||||||
args: --out dist
|
args: --out dist
|
||||||
- name: Upload sdist
|
- name: Upload sdist
|
||||||
uses: actions/upload-artifact@v5.0.0
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||||
with:
|
with:
|
||||||
name: wheels-sdist
|
name: wheels-sdist
|
||||||
path: dist
|
path: dist
|
||||||
@@ -103,10 +103,10 @@ jobs:
|
|||||||
# Used to generate artifact attestation
|
# Used to generate artifact attestation
|
||||||
attestations: write
|
attestations: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v6.0.0
|
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||||
|
|
||||||
- name: Generate artifact attestation
|
- name: Generate artifact attestation
|
||||||
uses: actions/attest-build-provenance@v3.0.0
|
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
|
||||||
with:
|
with:
|
||||||
subject-path: 'wheels-*/*'
|
subject-path: 'wheels-*/*'
|
||||||
|
|
||||||
|
|||||||
6
.github/workflows/scorecards.yml
vendored
6
.github/workflows/scorecards.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@v5.0.0
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||||
# format to the repository Actions tab.
|
# format to the repository Actions tab.
|
||||||
- name: "Upload artifact"
|
- name: "Upload artifact"
|
||||||
uses: actions/upload-artifact@v5.0.0
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||||
with:
|
with:
|
||||||
name: SARIF file
|
name: SARIF file
|
||||||
path: results.sarif
|
path: results.sarif
|
||||||
@@ -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@v4.31.2
|
uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [16.2.1](https://github.com/topgrade-rs/topgrade/compare/v16.2.0...v16.2.1) - 2025-11-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- *(release)* Use bash in Windows to fix powershell issues ([#1461](https://github.com/topgrade-rs/topgrade/pull/1461))
|
||||||
|
- *(release)* Fix .deb distribution ([#1460](https://github.com/topgrade-rs/topgrade/pull/1460))
|
||||||
|
- *(release)* Fix .deb distribution ([#1458](https://github.com/topgrade-rs/topgrade/pull/1458))
|
||||||
|
|
||||||
## [16.2.0](https://github.com/topgrade-rs/topgrade/compare/v16.1.2...v16.2.0) - 2025-11-10
|
## [16.2.0](https://github.com/topgrade-rs/topgrade/compare/v16.1.2...v16.2.0) - 2025-11-10
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
1979
Cargo.lock
generated
1979
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ keywords = ["upgrade", "update"]
|
|||||||
license = "GPL-3.0"
|
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.2.0"
|
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,7 +14,7 @@ edition = "2021"
|
|||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
home = "~0.5"
|
home = "~0.5,<0.5.11"
|
||||||
etcetera = "~0.8"
|
etcetera = "~0.8"
|
||||||
serde = { version = "~1.0", features = ["derive"] }
|
serde = { version = "~1.0", features = ["derive"] }
|
||||||
toml = "0.8"
|
toml = "0.8"
|
||||||
@@ -48,6 +48,10 @@ sys-locale = "0.3.1"
|
|||||||
jetbrains-toolbox-updater = "5.0.0"
|
jetbrains-toolbox-updater = "5.0.0"
|
||||||
indexmap = { version = "2.9.0", features = ["serde"] }
|
indexmap = { version = "2.9.0", features = ["serde"] }
|
||||||
serde_json = "1.0.145"
|
serde_json = "1.0.145"
|
||||||
|
# Temporary transitive dependency pins
|
||||||
|
ignore = "=0.4.25"
|
||||||
|
globset = "=0.4.16"
|
||||||
|
base64ct = "<1.8.0"
|
||||||
|
|
||||||
[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" }]
|
||||||
|
|||||||
@@ -286,6 +286,11 @@
|
|||||||
# winget_use_sudo = true
|
# winget_use_sudo = true
|
||||||
|
|
||||||
|
|
||||||
|
[chezmoi]
|
||||||
|
# Exclude encrypted files from update
|
||||||
|
# (default: false)
|
||||||
|
# exclude_encrypted = false
|
||||||
|
|
||||||
[npm]
|
[npm]
|
||||||
# Use sudo if the NPM directory isn't owned by the current user
|
# Use sudo if the NPM directory isn't owned by the current user
|
||||||
# use_sudo = true
|
# use_sudo = true
|
||||||
|
|||||||
@@ -1306,14 +1306,6 @@ _version: 2
|
|||||||
zh_CN: "Windows 更新"
|
zh_CN: "Windows 更新"
|
||||||
zh_TW: "Windows 更新"
|
zh_TW: "Windows 更新"
|
||||||
de: "Windows-Update"
|
de: "Windows-Update"
|
||||||
"Checking if /etc/motd contains -current or -beta":
|
|
||||||
en: "Checking if /etc/motd contains -current or -beta"
|
|
||||||
lt: "Tikrinimas, jei /etc/motd yra -current arba -beta"
|
|
||||||
es: "Comprobación de si /etc/motd contiene -current o -beta"
|
|
||||||
fr: "Vérification si /etc/motd contient -current ou -beta"
|
|
||||||
zh_CN: "检查 /etc/motd 是否包含 -current 或 -beta"
|
|
||||||
zh_TW: "檢查 /etc/motd 是否包含 -current 或 -beta"
|
|
||||||
de: "Überprüfen, ob /etc/motd -current oder -beta enthält"
|
|
||||||
"Microsoft Store":
|
"Microsoft Store":
|
||||||
en: "Microsoft Store"
|
en: "Microsoft Store"
|
||||||
lt: "Microsoft parduotuvė"
|
lt: "Microsoft parduotuvė"
|
||||||
|
|||||||
10
renovate.json
Normal file
10
renovate.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:best-practices",
|
||||||
|
":semanticCommits"
|
||||||
|
],
|
||||||
|
"lockFileMaintenance": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -165,6 +165,13 @@ pub struct Deno {
|
|||||||
version: Option<String>,
|
version: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Default, Debug, Merge)]
|
||||||
|
#[serde(deny_unknown_fields)]
|
||||||
|
#[allow(clippy::upper_case_acronyms)]
|
||||||
|
pub struct Chezmoi {
|
||||||
|
exclude_encrypted: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Default, Debug, Merge)]
|
#[derive(Deserialize, Default, Debug, Merge)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
#[allow(clippy::upper_case_acronyms)]
|
#[allow(clippy::upper_case_acronyms)]
|
||||||
@@ -457,6 +464,9 @@ pub struct ConfigFile {
|
|||||||
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
|
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
|
||||||
npm: Option<NPM>,
|
npm: Option<NPM>,
|
||||||
|
|
||||||
|
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
|
||||||
|
chezmoi: Option<Chezmoi>,
|
||||||
|
|
||||||
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
|
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
|
||||||
yarn: Option<Yarn>,
|
yarn: Option<Yarn>,
|
||||||
|
|
||||||
@@ -1597,8 +1607,7 @@ impl Config {
|
|||||||
self.config_file.misc.as_ref().and_then(|misc| misc.sudo_command)
|
self.config_file.misc.as_ref().and_then(|misc| misc.sudo_command)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If `true`, `sudo` should be called after `pre_commands` in order to elevate at the
|
/// If `true`, `sudo -v` should be called to cache credentials at the start of the run
|
||||||
/// start of the session (and not in the middle).
|
|
||||||
pub fn pre_sudo(&self) -> bool {
|
pub fn pre_sudo(&self) -> bool {
|
||||||
self.config_file
|
self.config_file
|
||||||
.misc
|
.misc
|
||||||
@@ -1774,6 +1783,14 @@ impl Config {
|
|||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn chezmoi_exclude_encrypted(&self) -> bool {
|
||||||
|
self.config_file
|
||||||
|
.chezmoi
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|chezmoi| chezmoi.exclude_encrypted)
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn vscode_profile(&self) -> Option<&str> {
|
pub fn vscode_profile(&self) -> Option<&str> {
|
||||||
let vscode_cfg = self.config_file.vscode.as_ref()?;
|
let vscode_cfg = self.config_file.vscode.as_ref()?;
|
||||||
let profile = vscode_cfg.profile.as_ref()?;
|
let profile = vscode_cfg.profile.as_ref()?;
|
||||||
|
|||||||
24
src/main.rs
24
src/main.rs
@@ -187,17 +187,7 @@ fn run() -> Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Self-Update step, this will execute only if:
|
step::Step::SelfUpdate.run(&mut runner, &ctx)?;
|
||||||
// 1. the `self-update` feature is enabled
|
|
||||||
// 2. it is not disabled from configuration (env var/CLI opt/file)
|
|
||||||
#[cfg(feature = "self-update")]
|
|
||||||
{
|
|
||||||
let should_self_update = env::var("TOPGRADE_NO_SELF_UPGRADE").is_err() && !config.no_self_update();
|
|
||||||
|
|
||||||
if should_self_update {
|
|
||||||
runner.execute(step::Step::SelfUpdate, "Self Update", || self_update::self_update(&ctx))?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
let _self_rename = if config.self_rename() {
|
let _self_rename = if config.self_rename() {
|
||||||
@@ -206,18 +196,18 @@ fn run() -> Result<()> {
|
|||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(commands) = config.pre_commands() {
|
|
||||||
for (name, command) in commands {
|
|
||||||
generic::run_custom_command(name, command, &ctx)?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.pre_sudo() {
|
if config.pre_sudo() {
|
||||||
if let Some(sudo) = ctx.sudo() {
|
if let Some(sudo) = ctx.sudo() {
|
||||||
sudo.elevate(&ctx)?;
|
sudo.elevate(&ctx)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(commands) = config.pre_commands() {
|
||||||
|
for (name, command) in commands {
|
||||||
|
generic::run_custom_command(name, command, &ctx)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for step in step::default_steps() {
|
for step in step::default_steps() {
|
||||||
step.run(&mut runner, &ctx)?
|
step.run(&mut runner, &ctx)?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -544,6 +544,9 @@ impl Step {
|
|||||||
runner.execute(*self, "SDKMAN!", || unix::run_sdkman(ctx))?
|
runner.execute(*self, "SDKMAN!", || unix::run_sdkman(ctx))?
|
||||||
}
|
}
|
||||||
SelfUpdate => {
|
SelfUpdate => {
|
||||||
|
// Self-Update step, this will execute only if:
|
||||||
|
// 1. the `self-update` feature is enabled
|
||||||
|
// 2. it is not disabled from configuration (env var/CLI opt/file)
|
||||||
#[cfg(feature = "self-update")]
|
#[cfg(feature = "self-update")]
|
||||||
{
|
{
|
||||||
if std::env::var("TOPGRADE_NO_SELF_UPGRADE").is_err() && !ctx.config().no_self_update() {
|
if std::env::var("TOPGRADE_NO_SELF_UPGRADE").is_err() && !ctx.config().no_self_update() {
|
||||||
|
|||||||
@@ -916,9 +916,17 @@ pub fn run_chezmoi_update(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
let chezmoi = require("chezmoi")?;
|
let chezmoi = require("chezmoi")?;
|
||||||
HOME_DIR.join(".local/share/chezmoi").require()?;
|
HOME_DIR.join(".local/share/chezmoi").require()?;
|
||||||
|
|
||||||
|
let mut cmd = ctx.execute(chezmoi);
|
||||||
|
|
||||||
print_separator("chezmoi");
|
print_separator("chezmoi");
|
||||||
|
|
||||||
ctx.execute(chezmoi).arg("update").status_checked()
|
cmd.arg("update");
|
||||||
|
|
||||||
|
if ctx.config().chezmoi_exclude_encrypted() {
|
||||||
|
cmd.arg("--exclude=encrypted");
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.status_checked()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn run_myrepos_update(ctx: &ExecutionContext) -> Result<()> {
|
pub fn run_myrepos_update(ctx: &ExecutionContext) -> Result<()> {
|
||||||
@@ -1561,9 +1569,25 @@ pub fn run_zvm(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
pub fn run_bun(ctx: &ExecutionContext) -> Result<()> {
|
pub fn run_bun(ctx: &ExecutionContext) -> Result<()> {
|
||||||
let bun = require("bun")?;
|
let bun = require("bun")?;
|
||||||
|
|
||||||
|
// From the official install script (both install.sh and install.ps1), Bun uses
|
||||||
|
// the path set in this variable as the install root, and its defaults to
|
||||||
|
// `$HOME/.bun`
|
||||||
|
//
|
||||||
|
// UNIX: https://bun.sh/install.sh
|
||||||
|
// Windows: https://bun.sh/install.ps1
|
||||||
|
let bun_install_env = env::var("BUN_INSTALL")
|
||||||
|
.map(PathBuf::from)
|
||||||
|
.unwrap_or(HOME_DIR.join(".bun"));
|
||||||
|
|
||||||
|
// If `bun` is a descendant of `bun_install_env`, then Bun is installed
|
||||||
|
// through the official script
|
||||||
|
if bun.is_descendant_of(&bun_install_env) {
|
||||||
print_separator("Bun");
|
print_separator("Bun");
|
||||||
|
|
||||||
ctx.execute(bun).arg("upgrade").status_checked()
|
ctx.execute(bun).arg("upgrade").status_checked()
|
||||||
|
} else {
|
||||||
|
Err(SkipStep("Not installed through the official script".to_string()).into())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn run_zigup(ctx: &ExecutionContext) -> Result<()> {
|
pub fn run_zigup(ctx: &ExecutionContext) -> Result<()> {
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
use crate::command::CommandExt;
|
use crate::command::CommandExt;
|
||||||
use crate::execution_context::ExecutionContext;
|
use crate::execution_context::ExecutionContext;
|
||||||
use crate::executor::RunType;
|
|
||||||
use crate::terminal::print_separator;
|
use crate::terminal::print_separator;
|
||||||
use color_eyre::eyre::Result;
|
use color_eyre::eyre::Result;
|
||||||
use rust_i18n::t;
|
use rust_i18n::t;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use tracing::debug;
|
||||||
|
|
||||||
fn is_openbsd_current(ctx: &ExecutionContext) -> Result<bool> {
|
fn is_openbsd_current() -> Result<bool> {
|
||||||
let motd_content = fs::read_to_string("/etc/motd")?;
|
let motd_content = fs::read_to_string("/etc/motd")?;
|
||||||
let is_current = ["-current", "-beta"].iter().any(|&s| motd_content.contains(s));
|
let is_current = ["-current", "-beta"].iter().any(|&s| motd_content.contains(s));
|
||||||
match ctx.config.run_type() {
|
|
||||||
RunType::Dry | RunType::Damp => {
|
debug!("OpenBSD is -current/-beta: {is_current}");
|
||||||
println!("{}", t!("Checking if /etc/motd contains -current or -beta"));
|
|
||||||
}
|
|
||||||
RunType::Wet => {}
|
|
||||||
}
|
|
||||||
Ok(is_current)
|
Ok(is_current)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,12 +20,7 @@ pub fn upgrade_openbsd(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
|
|
||||||
let sudo = ctx.require_sudo()?;
|
let sudo = ctx.require_sudo()?;
|
||||||
|
|
||||||
let is_current = is_openbsd_current(ctx)?;
|
let is_current = is_openbsd_current()?;
|
||||||
|
|
||||||
if ctx.config().dry_run() {
|
|
||||||
println!("{}", t!("Would upgrade the OpenBSD system"));
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_current {
|
if is_current {
|
||||||
sudo.execute(ctx, "/usr/sbin/sysupgrade")?.arg("-sn").status_checked()
|
sudo.execute(ctx, "/usr/sbin/sysupgrade")?.arg("-sn").status_checked()
|
||||||
@@ -42,7 +34,7 @@ pub fn upgrade_packages(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
|
|
||||||
let sudo = ctx.require_sudo()?;
|
let sudo = ctx.require_sudo()?;
|
||||||
|
|
||||||
let is_current = is_openbsd_current(ctx)?;
|
let is_current = is_openbsd_current()?;
|
||||||
|
|
||||||
if ctx.config().cleanup() {
|
if ctx.config().cleanup() {
|
||||||
sudo.execute(ctx, "/usr/sbin/pkg_delete")?.arg("-ac").status_checked()?;
|
sudo.execute(ctx, "/usr/sbin/pkg_delete")?.arg("-ac").status_checked()?;
|
||||||
|
|||||||
Reference in New Issue
Block a user