[package] name = "topgrade" description = "Upgrade all the things" categories = ["command-line-utilities"] keywords = ["upgrade", "update"] license = "GPL-3.0-or-later" repository = "https://github.com/topgrade-rs/topgrade" rust-version = "1.88.0" version = "17.6.2" exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"] edition = "2024" readme = "README.md" [dependencies] etcetera = "0.11.0" serde = { version = "1.0", features = ["derive"] } toml = { version = "1.0.0", features = ["preserve_order"] } which_crate = { version = "8.0", package = "which" } shellexpand = "3.1" clap = { version = "4.5", features = ["cargo", "derive"] } clap_complete = "4.5" clap_mangen = "0.3" walkdir = "2.5" console = "0.16" crossterm = { version = "0.29", default-features = false, features = ["bracketed-paste", "events", "use-dev-tty", "windows"] } chrono = "0.4" glob = "0.3" strum = { version = "0.28.0", features = ["derive"] } thiserror = "2.0" tempfile = "3.24.0" tokio = { version = "1.49.0", features = ["process", "rt-multi-thread"] } futures = "0.3" regex = "1.12" semver = "1.0" shell-words = "1.1" color-eyre = "0.6" tracing = { version = "0.1", features = ["attributes", "log"] } tracing-subscriber = { version = "0.3.20", features = ["env-filter", "time"] } merge = "0.2" regex-split = "0.1" notify-rust = "4.12.0" wildmatch = "2.3.0" rust-i18n = "4.0.0" sys-locale = "0.3.1" jetbrains-toolbox-updater = "6.0.0" indexmap = { version = "2.9.0", features = ["serde"] } serde_json = "1.0.145" itertools = "0.15.0" clap-cargo = "0.18.0" edit = "0.1.5" [build-dependencies] parse-changelog = { version = "0.6.15", default-features = false } [package.metadata.generate-rpm] assets = [{ source = "target/release/topgrade", dest = "/usr/bin/topgrade" }] [package.metadata.generate-rpm.requires] git = "*" [package.metadata.deb] maintainer = "Chris Gelatt " copyright = "2026, Topgrade Team" license-file = ["LICENSE", "0"] extended-description = "Keeping your system up to date usually involves invoking multiple package managers. This results in big, non-portable shell one-liners saved in your shell. To remedy this, Topgrade detects which tools you use and runs the appropriate commands to update them." section = "utils" priority = "optional" revision = "" assets = [ # Binary and README.md "$auto", # The man page and shell completions are automatically generated by topgrade's build process in CI, # so these files aren't actually committed. ["deployment/deb/topgrade.1", "usr/share/man/man1/topgrade.1", "644"], ["deployment/deb/topgrade.bash", "usr/share/bash-completion/completions/topgrade", "644"], ["deployment/deb/topgrade.fish", "usr/share/fish/vendor_completions.d/topgrade.fish", "644"], ["deployment/deb/_topgrade", "usr/share/zsh/vendor-completions/", "644"], ] [target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies] system_shutdown = "4.1.0" [target.'cfg(unix)'.dependencies] nix = { version = "0.31", features = ["hostname", "signal", "user"] } rust-ini = "0.21" self_update_crate = { version = "0.44", default-features = false, optional = true, package = "self_update", features = ["archive-tar", "compression-flate2", "rustls", "reqwest"] } [target.'cfg(windows)'.dependencies] is_elevated = "0.1" parselnk = "0.1" self_update_crate = { version = "0.44", default-features = false, optional = true, package = "self_update", features = ["archive-zip", "compression-zip-deflate", "rustls", "reqwest"] } windows = { version = "0.62", features = ["Win32_System_Console"] } windows-registry = "0.6" [profile.release] lto = true codegen-units = 1 [features] default = [] self-update = ["self_update_crate"]