[package]
edition = "2024"
rust-version = "1.89"
name = "btrfs-cli"
version = "0.13.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "btrfs"
description = "User-space command-line tool for inspecting and managing Btrfs filesystems"
homepage = "https://rustutils.gitlab.io/btrfsutils"
readme = "README.md"
keywords = [
"btrfs",
"filesystem",
"cli",
"linux",
"storage",
]
categories = [
"command-line-utilities",
"filesystem",
]
license = "GPL-2.0-only"
repository = "https://github.com/rustutils/btrfsutils"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]
[package.metadata.deb]
name = "btrfsutils"
maintainer = "Patrick Elsen <pelsen@xfbs.net>"
section = "admin"
priority = "optional"
depends = ""
conflicts = "btrfs-progs"
replaces = "btrfs-progs"
provides = "btrfs-progs"
extended-description = """
A clean-room reimplementation of btrfs-progs in Rust. Ships the
btrfs CLI as a single multicall binary with all inspection and
management commands plus mkfs, tune, and an experimental userspace
FUSE driver.
"""
assets = [
[
"target/release/btrfs",
"usr/bin/btrfs",
"0755",
],
[
"target/release/../symlinks/*",
"usr/bin/",
"0755",
],
[
"../README.md",
"usr/share/doc/btrfsutils/README",
"0644",
],
[
"../LICENSE.md",
"usr/share/doc/btrfsutils/LICENSE",
"0644",
],
[
"../CHANGELOG.md",
"usr/share/doc/btrfsutils/CHANGELOG",
"0644",
],
[
"target/release/../gen/man/*.1",
"usr/share/man/man1/",
"0644",
],
[
"target/release/../gen/completions/btrfs.bash",
"usr/share/bash-completion/completions/btrfs",
"0644",
],
[
"target/release/../gen/completions/mkfs.btrfs.bash",
"usr/share/bash-completion/completions/mkfs.btrfs",
"0644",
],
[
"target/release/../gen/completions/btrfs.fish",
"usr/share/fish/vendor_completions.d/btrfs.fish",
"0644",
],
[
"target/release/../gen/completions/mkfs.btrfs.fish",
"usr/share/fish/vendor_completions.d/mkfs.btrfs.fish",
"0644",
],
[
"target/release/../gen/completions/_btrfs",
"usr/share/zsh/vendor-completions/_btrfs",
"0644",
],
[
"target/release/../gen/completions/_mkfs.btrfs",
"usr/share/zsh/vendor-completions/_mkfs.btrfs",
"0644",
],
]
[package.metadata.generate-rpm]
name = "btrfsutils"
license = "GPL-2.0-only"
summary = "Rust reimplementation of the btrfs command-line tools"
auto-req = "no"
post_install_script = """
for t in mkfs.btrfs btrfs-mkfs btrfstune btrfs-tune; do
ln -sf btrfs /usr/bin/$t
done
"""
post_uninstall_script = """
if [ "$1" = 0 ]; then
for t in mkfs.btrfs btrfs-mkfs btrfstune btrfs-tune; do
rm -f /usr/bin/$t
done
fi
"""
[[package.metadata.generate-rpm.assets]]
source = "target/release/btrfs"
dest = "/usr/bin/btrfs"
mode = "755"
[[package.metadata.generate-rpm.assets]]
source = "../README.md"
dest = "/usr/share/doc/btrfsutils/README"
mode = "644"
doc = true
[[package.metadata.generate-rpm.assets]]
source = "../LICENSE.md"
dest = "/usr/share/doc/btrfsutils/LICENSE"
mode = "644"
doc = true
[[package.metadata.generate-rpm.assets]]
source = "../CHANGELOG.md"
dest = "/usr/share/doc/btrfsutils/CHANGELOG"
mode = "644"
doc = true
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/man/*.1"
dest = "/usr/share/man/man1/"
mode = "644"
doc = true
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/btrfs.bash"
dest = "/usr/share/bash-completion/completions/btrfs"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/mkfs.btrfs.bash"
dest = "/usr/share/bash-completion/completions/mkfs.btrfs"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/btrfs.fish"
dest = "/usr/share/fish/vendor_completions.d/btrfs.fish"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/mkfs.btrfs.fish"
dest = "/usr/share/fish/vendor_completions.d/mkfs.btrfs.fish"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/_btrfs"
dest = "/usr/share/zsh/vendor-completions/_btrfs"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "target/release/../gen/completions/_mkfs.btrfs"
dest = "/usr/share/zsh/vendor-completions/_mkfs.btrfs"
mode = "644"
[package.metadata.generate-rpm.conflicts]
btrfs-progs = "*"
[package.metadata.generate-rpm.obsoletes]
btrfs-progs = "*"
[features]
default = [
"mkfs",
"tune",
]
fuse = ["dep:btrfs-fuse"]
mkfs = ["dep:btrfs-mkfs"]
multicall = []
tune = ["dep:btrfs-tune"]
[lib]
name = "btrfs_cli"
path = "src/lib.rs"
[[bin]]
name = "btrfs"
path = "src/main.rs"
[[test]]
name = "arguments"
path = "tests/arguments.rs"
[[test]]
name = "commands"
path = "tests/commands.rs"
[[test]]
name = "common"
path = "tests/common.rs"
[[test]]
name = "help"
path = "tests/help.rs"
[dependencies.anyhow]
version = "1.0.102"
[dependencies.btrfs-disk]
version = "0.13.0"
[dependencies.btrfs-fs]
version = "0.13.0"
[dependencies.btrfs-fuse]
version = "0.13.0"
optional = true
[dependencies.btrfs-mkfs]
version = "0.13.0"
optional = true
[dependencies.btrfs-stream]
version = "0.13.0"
features = ["receive"]
[dependencies.btrfs-transaction]
version = "0.13.0"
[dependencies.btrfs-tune]
version = "0.13.0"
optional = true
[dependencies.btrfs-uapi]
version = "0.13.0"
[dependencies.chrono]
version = "0.4.44"
features = ["clock"]
default-features = false
[dependencies.clap]
version = "4.6.0"
features = [
"derive",
"wrap_help",
"suggestions",
"env",
]
[dependencies.cols]
version = "0.3.2"
features = [
"derive",
"color",
]
[dependencies.console]
version = "0.15"
[dependencies.env_logger]
version = "0.11.9"
[dependencies.flate2]
version = "1"
[dependencies.libc]
version = "0.2"
[dependencies.log]
version = "0.4.29"
[dependencies.lzokay]
version = "2"
[dependencies.nix]
version = "0.31.2"
features = [
"ioctl",
"fs",
]
[dependencies.regex-lite]
version = "0.1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.tokio]
version = "1"
features = ["rt"]
default-features = false
[dependencies.uuid]
version = "1"
features = [
"v4",
"v7",
]
[dependencies.zstd]
version = "0.13"
[dev-dependencies.insta]
version = "1"
[dev-dependencies.tempfile]
version = "3"