| <# | |
| .SYNOPSIS | |
| Runs the local maintenance checks for Tomato Novel Downloader. | |
| .DESCRIPTION | |
| This script intentionally avoids `cargo --all-features` because the project has | |
| mutually exclusive features: `official-api` and `no-official-api`. | |
| Run from the repository root: | |
| pwsh ./scripts/maintain.ps1 | |
| powershell -ExecutionPolicy Bypass -File ./scripts/maintain.ps1 | |
| #> | |
| param( | |
| [switch]$SkipFmt, | |
| [switch]$SkipNoOfficial, | |
| [switch]$SkipTree | |
| ) | |
| $ErrorActionPreference = "Stop" | |
| function Invoke-Step { | |
| param( | |
| [Parameter(Mandatory = $true)] | |
| [string]$Name, | |
| [Parameter(Mandatory = $true)] | |
| [scriptblock]$Script | |
| ) | |
| Write-Host "`n==> $Name" -ForegroundColor Cyan | |
| & $Script | |
| } | |
| $repoRoot = Split-Path -Parent $PSScriptRoot | |
| Set-Location $repoRoot | |
| Invoke-Step "Rust toolchain" { | |
| rustc --version | |
| cargo --version | |
| } | |
| if (-not $SkipFmt) { | |
| Invoke-Step "Format check" { | |
| cargo fmt --all -- --check | |
| } | |
| } | |
| Invoke-Step "Default feature tests" { | |
| cargo test | |
| } | |
| Invoke-Step "Default feature clippy" { | |
| cargo clippy --all-targets -- -D warnings | |
| } | |
| if (-not $SkipNoOfficial) { | |
| Invoke-Step "no-official-api tests" { | |
| cargo test --no-default-features --features no-official-api | |
| } | |
| Invoke-Step "no-official-api clippy" { | |
| cargo clippy --no-default-features --features no-official-api --all-targets -- -D warnings | |
| } | |
| } | |
| if (-not $SkipTree) { | |
| Invoke-Step "Duplicate dependency overview" { | |
| cargo tree -d | |
| } | |
| } | |
| Write-Host "`nAll requested maintenance checks completed." -ForegroundColor Green | |