[package] name = "bottom" version = "0.10.2" authors = ["Clement Tsang "] edition = "2021" repository = "https://github.com/ClementTsang/bottom" keywords = ["cross-platform", "monitoring", "cli", "top", "tui"] license = "MIT" categories = ["command-line-utilities", "visualization"] description = "A customizable cross-platform graphical process/system monitor for the terminal. Supports Linux, macOS, and Windows." documentation = "https://clementtsang.github.io/bottom/stable" readme = "README.md" default-run = "btm" build = "build.rs" exclude = [ ".cargo-husky/", ".github/", ".idea", ".vscode/", "assets/", "desktop/", "docs/", "flamegraphs/", "sample_configs/", "schema/", "scripts/", "wix/", ".all-contributorsrc", ".cirrus.yml", ".gitignore", ".markdownlint.json", "CHANGELOG.md", "clippy.toml", "codecov.yml", "CONTRIBUTING.md", "Cross.toml", "rust-toolchain.toml", "rustfmt.toml", ] # The oldest version I've tested that should still build - note this is not an official MSRV! rust-version = "1.74.0" [[bin]] name = "btm" path = "src/main.rs" test = true doctest = true doc = true [profile.dev.package."*"] # Compile dependencies with optimizations enabled, even in debug mode. opt-level = 3 [profile.no-opt] inherits = "dev" opt-level = 0 [profile.release] debug = 0 strip = "symbols" lto = true opt-level = 3 codegen-units = 1 [profile.profiling] inherits = "release" debug = true strip = false [features] battery = ["starship-battery"] nvidia = ["nvml-wrapper"] gpu = ["nvidia"] zfs = [] deploy = ["battery", "gpu", "zfs"] default = ["deploy"] logging = ["fern", "log", "time"] generate_schema = ["schemars", "serde_json", "strum"] [dependencies] anyhow = "1.0.89" backtrace = "0.3.74" cfg-if = "1.0.0" clap = { version = "4.5.20", features = ["default", "cargo", "wrap_help", "derive"] } concat-string = "1.0.1" crossterm = "0.27.0" ctrlc = { version = "3.4.5", features = ["termination"] } dirs = "5.0.1" # Maybe consider https://github.com/rust-lang/rustc-hash for some cases too? hashbrown = "0.15.0" humantime = "2.1.0" indexmap = "2.6.0" indoc = "2.0.5" itertools = "0.13.0" nvml-wrapper = { version = "0.10.0", optional = true, features = ["legacy-functions"] } regex = "1.11.0" serde = { version = "1.0.210", features = ["derive"] } starship-battery = { version = "0.9.1", optional = true } sysinfo = "=0.30.13" toml_edit = { version = "0.22.22", features = ["serde"] } tui = { version = "0.27.0", package = "ratatui" } unicode-ellipsis = "0.2.0" unicode-segmentation = "1.12.0" unicode-width = "0.2.0" # Used for logging. fern = { version = "0.6.2", optional = true } log = { version = "0.4.22", optional = true } time = { version = "0.3.36", features = ["local-offset", "formatting", "macros"], optional = true } # These are just used for JSON schema generation. schemars = { version = "0.8.21", optional = true } serde_json = { version = "1.0.128", optional = true } strum = { version = "0.26.3", features = ["derive"], optional = true } [target.'cfg(unix)'.dependencies] libc = "0.2.159" [target.'cfg(target_os = "linux")'.dependencies] rustix = { version = "0.38.37", features = ["fs", "param"] } [target.'cfg(target_os = "macos")'.dependencies] core-foundation = "0.10.0" mach2 = "0.4.2" [target.'cfg(target_os = "windows")'.dependencies] windows = { version = "0.58.0", features = [ "Win32_Foundation", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Ioctl", "Win32_System_ProcessStatus", "Win32_System_Threading", ] } [target.'cfg(target_os = "freebsd")'.dependencies] serde_json = { version = "1.0.128" } sysctl = { version = "0.6.0" } filedescriptor = "0.8.2" [dev-dependencies] assert_cmd = "2.0.16" cargo-husky = { version = "1.5.0", default-features = false, features = ["user-hooks"] } predicates = "3.1.2" tempfile = "3.12.0" [target.'cfg(all(target_arch = "x86_64", target_os = "linux"))'.dev-dependencies] portable-pty = "0.8.1" [build-dependencies] clap = { version = "4.5.20", features = ["default", "cargo", "wrap_help", "derive"] } clap_complete = "4.5.33" clap_complete_nushell = "4.5.4" clap_complete_fig = "4.5.2" clap_mangen = "0.2.24" indoc = "2.0.5" [package.metadata.deb] section = "utility" assets = [ [ "target/release/btm", "usr/bin/", "755", ], [ "LICENSE", "usr/share/doc/btm/", "644", ], [ "manpage/btm.1.gz", "usr/share/man/man1/btm.1.gz", "644", ], [ "completion/btm.bash", "usr/share/bash-completion/completions/btm", "644", ], [ "completion/btm.fish", "usr/share/fish/vendor_completions.d/btm.fish", "644", ], [ "completion/_btm", "usr/share/zsh/vendor-completions/", "644", ], [ "desktop/bottom.desktop", "usr/share/applications/bottom.desktop", "644", ], ] extended-description = """ By default, bottom will look for a config file in ~/.config/bottom/bottom.toml. A config file can be specified \ using `-C`. If a config file does not exist at the specified or default location, a default one will be created \ for the user there. """ [package.metadata.deb.variants.arm64] depends = "libc6:arm64 (>= 2.28)" [package.metadata.deb.variants.armhf] depends = "libc6:armhf (>= 2.28)" [package.metadata.wix] output = "bottom_x86_64_installer.msi" [package.metadata.generate-rpm] assets = [ { source = "target/release/btm", dest = "/usr/bin/", mode = "755" }, { source = "LICENSE", dest = "/usr/share/doc/btm/", mode = "644" }, { source = "manpage/btm.1.gz", dest = "/usr/share/man/man1/btm.1.gz", mode = "644", doc = true }, { source = "completion/btm.bash", dest = "/usr/share/bash-completion/completions/btm", mode = "644" }, { source = "completion/btm.fish", dest = "/usr/share/fish/vendor_completions.d/btm.fish", mode = "644" }, { source = "completion/_btm", dest = "/usr/share/zsh/vendor-completions/", mode = "644" }, { source = "desktop/bottom.desktop", dest = "/usr/share/applications/bottom.desktop", mode = "644" }, ] [lints.rust] rust_2018_idioms = "deny" # missing_docs = "deny" [lints.rustdoc] broken_intra_doc_links = "deny" missing_crate_level_docs = "deny" [lints.clippy] todo = "deny" unimplemented = "deny" missing_safety_doc = "deny"