[package]
name = "coreutils"
description = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
default-run = "coreutils"
repository = "https://github.com/uutils/coreutils"
rust-version = "1.85.0"
version.workspace = true
authors.workspace = true
license.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
edition.workspace = true
[package.metadata.docs.rs]
all-features = true
[features]
default = ["feat_common_core"]
macos = ["feat_os_macos"]
unix = ["feat_os_unix"]
windows = ["feat_os_windows"]
expensive_tests = []
test_risky_names = []
uudoc = ["clap_complete", "clap_mangen", "fluent-syntax", "zip", "feat_Tier1"]
feat_external_libstdbuf = ["stdbuf/feat_external_libstdbuf"]
feat_systemd_logind = [
"pinky/feat_systemd_logind",
"uptime/feat_systemd_logind",
"users/feat_systemd_logind",
"uucore/feat_systemd_logind",
"who/feat_systemd_logind",
]
feat_acl = ["cp/feat_acl"]
feat_selinux = [
"cp/selinux",
"feat_require_selinux",
"id/selinux",
"install/selinux",
"ls/selinux",
"mkdir/selinux",
"mkfifo/selinux",
"mknod/selinux",
"selinux",
"stat/selinux",
]
feat_common_core = [
"base32",
"base64",
"basename",
"basenc",
"cat",
"cksum",
"comm",
"cp",
"csplit",
"cut",
"date",
"dd",
"df",
"dir",
"dircolors",
"dirname",
"du",
"echo",
"env",
"expand",
"expr",
"factor",
"false",
"fmt",
"fold",
"hashsum",
"head",
"join",
"link",
"ln",
"ls",
"mkdir",
"mktemp",
"more",
"mv",
"nl",
"numfmt",
"od",
"paste",
"pr",
"printenv",
"printf",
"ptx",
"pwd",
"readlink",
"realpath",
"rm",
"rmdir",
"seq",
"shred",
"shuf",
"sleep",
"sort",
"split",
"sum",
"tac",
"tail",
"tee",
"test",
"touch",
"tr",
"true",
"truncate",
"tsort",
"unexpand",
"uniq",
"unlink",
"vdir",
"wc",
"yes",
]
feat_Tier1 = [
"feat_common_core",
"arch",
"hostname",
"nproc",
"sync",
"uname",
"whoami",
]
feat_os_macos = [
"feat_os_unix",
"feat_require_unix_hostid",
]
feat_os_unix = [
"feat_Tier1",
"feat_require_unix",
"feat_require_unix_hostid",
"feat_require_unix_utmpx",
]
feat_os_unix_musl = [
"feat_Tier1",
"feat_require_unix_musl",
"feat_require_unix_hostid",
"feat_require_unix_utmpx",
]
feat_os_windows = [
"feat_Tier1",
]
feat_os_unix_gnueabihf = [
"feat_Tier1",
"feat_require_unix",
"feat_require_unix_hostid",
"feat_require_unix_utmpx",
]
feat_os_unix_android = [
"feat_Tier1",
"feat_require_unix",
]
feat_require_unix = ["feat_require_unix_core", "stdbuf"]
feat_require_unix_musl = ["feat_require_unix_core"]
feat_require_unix_core = [
"chgrp",
"chmod",
"chown",
"chroot",
"groups",
"id",
"install",
"kill",
"logname",
"mkfifo",
"mknod",
"nice",
"nohup",
"pathchk",
"stat",
"stty",
"timeout",
"tty",
]
feat_require_unix_utmpx = ["pinky", "uptime", "users", "who"]
feat_require_unix_hostid = ["hostid"]
feat_require_selinux = ["chcon", "runcon"]
feat_os_unix_fuchsia = [
"feat_common_core",
"chgrp",
"chmod",
"chown",
"du",
"groups",
"hostid",
"install",
"logname",
"mkfifo",
"mknod",
"nice",
"pathchk",
"tty",
"uname",
"unlink",
]
feat_os_unix_redox = [
"feat_common_core",
"chmod",
"stat",
"uname",
]
feat_os_windows_legacy = [
"feat_common_core",
"arch",
"nproc",
"sync",
"whoami",
]
test = ["uu_test"]
[workspace]
resolver = "3"
members = [
".",
"src/uu/*",
"src/uu/stdbuf/src/libstdbuf",
"src/uucore",
"src/uucore_procs",
"tests/benches/factor",
"tests/uutests",
]
[workspace.package]
authors = ["uutils developers"]
categories = ["command-line-utilities"]
edition = "2024"
homepage = "https://github.com/uutils/coreutils"
keywords = ["coreutils", "uutils", "cross-platform", "cli", "utility"]
license = "MIT"
readme = "README.package.md"
version = "0.3.0"
[workspace.dependencies]
ansi-width = "0.1.0"
bigdecimal = "0.4"
binary-heap-plus = "0.5.0"
bstr = "1.9.1"
bytecount = "0.6.8"
byteorder = "1.5.0"
chrono = { version = "0.4.41", default-features = false, features = [
"std",
"alloc",
"clock",
] }
clap = { version = "4.5", features = ["wrap_help", "cargo", "color"] }
clap_complete = "4.4"
clap_mangen = "0.2"
compare = "0.1.0"
crossterm = "0.29.0"
ctor = "0.6.0"
ctrlc = { version = "3.4.7", features = ["termination"] }
divan = { package = "codspeed-divan-compat", version = "4.0.5" }
dns-lookup = { version = "3.0.0" }
exacl = "0.12.0"
file_diff = "1.0.0"
filetime = "0.2.23"
fnv = "1.0.7"
fs_extra = "1.3.0"
fts-sys = "0.2.16"
gcd = "2.3"
glob = "0.3.1"
half = "2.4.1"
hostname = "0.4"
icu_collator = "2.0.0"
icu_decimal = "2.0.0"
icu_locale = "2.0.0"
icu_provider = "2.0.0"
indicatif = "0.18.0"
itertools = "0.14.0"
jiff = { version = "0.2.10", default-features = false, features = [
"std",
"alloc",
"tz-system",
] }
libc = "0.2.172"
linux-raw-sys = "0.11"
lscolors = { version = "0.21.0", default-features = false, features = [
"gnu_legacy",
] }
memchr = "2.7.2"
memmap2 = "0.9.4"
nix = { version = "0.30", default-features = false }
nom = "8.0.0"
notify = { version = "=8.2.0", features = ["macos_kqueue"] }
num-bigint = "0.4.4"
num-prime = "0.4.4"
num-traits = "0.2.19"
number_prefix = "0.4"
onig = { version = "~6.5.1", default-features = false }
parse_datetime = "0.11.0"
phf = "0.13.1"
phf_codegen = "0.13.1"
platform-info = "2.0.3"
procfs = "0.18"
rand = { version = "0.9.0", features = ["small_rng"] }
rand_core = "0.9.0"
rayon = "1.10"
regex = "1.10.4"
rstest = "0.26.0"
rust-ini = "0.21.0"
same-file = "1.0.6"
self_cell = "1.0.4"
selinux = "=0.5.2"
signal-hook = "0.3.17"
tempfile = "3.15.0"
terminal_size = "0.4.0"
textwrap = { version = "0.16.1", features = ["terminal_size"] }
thiserror = "2.0.3"
time = { version = "0.3.36" }
unicode-width = "0.2.0"
utmp-classic = "0.1.6"
uutils_term_grid = "0.7"
walkdir = "2.5"
winapi-util = "0.1.8"
windows-sys = { version = "0.61.0", default-features = false }
xattr = "1.3.1"
zip = { version = "6.0.0", default-features = false, features = ["deflate"] }
hex = "0.4.3"
md-5 = "0.10.6"
sha1 = "0.10.6"
sha2 = "0.10.8"
sha3 = "0.10.8"
blake2b_simd = "1.0.2"
blake3 = "1.5.1"
sm3 = "0.4.2"
crc32fast = "1.4.2"
crc-fast = "1.5.0"
digest = "0.10.7"
fluent = "0.17.0"
fluent-bundle = "0.16.0"
unic-langid = "0.9.6"
fluent-syntax = "0.12.0"
uucore = { version = "0.3.0", package = "uucore", path = "src/uucore" }
uucore_procs = { version = "0.3.0", package = "uucore_procs", path = "src/uucore_procs" }
uu_ls = { version = "0.3.0", path = "src/uu/ls" }
uu_base32 = { version = "0.3.0", path = "src/uu/base32" }
uutests = { version = "0.3.0", package = "uutests", path = "tests/uutests" }
[dependencies]
clap.workspace = true
clap_complete = { workspace = true, optional = true }
clap_mangen = { workspace = true, optional = true }
fluent-syntax = { workspace = true, optional = true }
phf.workspace = true
selinux = { workspace = true, optional = true }
textwrap.workspace = true
uucore.workspace = true
zip = { workspace = true, optional = true }
uu_test = { optional = true, version = "0.3.0", package = "uu_test", path = "src/uu/test" }
arch = { optional = true, version = "0.3.0", package = "uu_arch", path = "src/uu/arch" }
base32 = { optional = true, version = "0.3.0", package = "uu_base32", path = "src/uu/base32" }
base64 = { optional = true, version = "0.3.0", package = "uu_base64", path = "src/uu/base64" }
basename = { optional = true, version = "0.3.0", package = "uu_basename", path = "src/uu/basename" }
basenc = { optional = true, version = "0.3.0", package = "uu_basenc", path = "src/uu/basenc" }
cat = { optional = true, version = "0.3.0", package = "uu_cat", path = "src/uu/cat" }
chcon = { optional = true, version = "0.3.0", package = "uu_chcon", path = "src/uu/chcon" }
chgrp = { optional = true, version = "0.3.0", package = "uu_chgrp", path = "src/uu/chgrp" }
chmod = { optional = true, version = "0.3.0", package = "uu_chmod", path = "src/uu/chmod" }
chown = { optional = true, version = "0.3.0", package = "uu_chown", path = "src/uu/chown" }
chroot = { optional = true, version = "0.3.0", package = "uu_chroot", path = "src/uu/chroot" }
cksum = { optional = true, version = "0.3.0", package = "uu_cksum", path = "src/uu/cksum" }
comm = { optional = true, version = "0.3.0", package = "uu_comm", path = "src/uu/comm" }
cp = { optional = true, version = "0.3.0", package = "uu_cp", path = "src/uu/cp" }
csplit = { optional = true, version = "0.3.0", package = "uu_csplit", path = "src/uu/csplit" }
cut = { optional = true, version = "0.3.0", package = "uu_cut", path = "src/uu/cut" }
date = { optional = true, version = "0.3.0", package = "uu_date", path = "src/uu/date" }
dd = { optional = true, version = "0.3.0", package = "uu_dd", path = "src/uu/dd" }
df = { optional = true, version = "0.3.0", package = "uu_df", path = "src/uu/df" }
dir = { optional = true, version = "0.3.0", package = "uu_dir", path = "src/uu/dir" }
dircolors = { optional = true, version = "0.3.0", package = "uu_dircolors", path = "src/uu/dircolors" }
dirname = { optional = true, version = "0.3.0", package = "uu_dirname", path = "src/uu/dirname" }
du = { optional = true, version = "0.3.0", package = "uu_du", path = "src/uu/du" }
echo = { optional = true, version = "0.3.0", package = "uu_echo", path = "src/uu/echo" }
env = { optional = true, version = "0.3.0", package = "uu_env", path = "src/uu/env" }
expand = { optional = true, version = "0.3.0", package = "uu_expand", path = "src/uu/expand" }
expr = { optional = true, version = "0.3.0", package = "uu_expr", path = "src/uu/expr" }
factor = { optional = true, version = "0.3.0", package = "uu_factor", path = "src/uu/factor" }
false = { optional = true, version = "0.3.0", package = "uu_false", path = "src/uu/false" }
fmt = { optional = true, version = "0.3.0", package = "uu_fmt", path = "src/uu/fmt" }
fold = { optional = true, version = "0.3.0", package = "uu_fold", path = "src/uu/fold" }
groups = { optional = true, version = "0.3.0", package = "uu_groups", path = "src/uu/groups" }
hashsum = { optional = true, version = "0.3.0", package = "uu_hashsum", path = "src/uu/hashsum" }
head = { optional = true, version = "0.3.0", package = "uu_head", path = "src/uu/head" }
hostid = { optional = true, version = "0.3.0", package = "uu_hostid", path = "src/uu/hostid" }
hostname = { optional = true, version = "0.3.0", package = "uu_hostname", path = "src/uu/hostname" }
id = { optional = true, version = "0.3.0", package = "uu_id", path = "src/uu/id" }
install = { optional = true, version = "0.3.0", package = "uu_install", path = "src/uu/install" }
join = { optional = true, version = "0.3.0", package = "uu_join", path = "src/uu/join" }
kill = { optional = true, version = "0.3.0", package = "uu_kill", path = "src/uu/kill" }
link = { optional = true, version = "0.3.0", package = "uu_link", path = "src/uu/link" }
ln = { optional = true, version = "0.3.0", package = "uu_ln", path = "src/uu/ln" }
ls = { optional = true, version = "0.3.0", package = "uu_ls", path = "src/uu/ls" }
logname = { optional = true, version = "0.3.0", package = "uu_logname", path = "src/uu/logname" }
mkdir = { optional = true, version = "0.3.0", package = "uu_mkdir", path = "src/uu/mkdir" }
mkfifo = { optional = true, version = "0.3.0", package = "uu_mkfifo", path = "src/uu/mkfifo" }
mknod = { optional = true, version = "0.3.0", package = "uu_mknod", path = "src/uu/mknod" }
mktemp = { optional = true, version = "0.3.0", package = "uu_mktemp", path = "src/uu/mktemp" }
more = { optional = true, version = "0.3.0", package = "uu_more", path = "src/uu/more" }
mv = { optional = true, version = "0.3.0", package = "uu_mv", path = "src/uu/mv" }
nice = { optional = true, version = "0.3.0", package = "uu_nice", path = "src/uu/nice" }
nl = { optional = true, version = "0.3.0", package = "uu_nl", path = "src/uu/nl" }
nohup = { optional = true, version = "0.3.0", package = "uu_nohup", path = "src/uu/nohup" }
nproc = { optional = true, version = "0.3.0", package = "uu_nproc", path = "src/uu/nproc" }
numfmt = { optional = true, version = "0.3.0", package = "uu_numfmt", path = "src/uu/numfmt" }
od = { optional = true, version = "0.3.0", package = "uu_od", path = "src/uu/od" }
paste = { optional = true, version = "0.3.0", package = "uu_paste", path = "src/uu/paste" }
pathchk = { optional = true, version = "0.3.0", package = "uu_pathchk", path = "src/uu/pathchk" }
pinky = { optional = true, version = "0.3.0", package = "uu_pinky", path = "src/uu/pinky" }
pr = { optional = true, version = "0.3.0", package = "uu_pr", path = "src/uu/pr" }
printenv = { optional = true, version = "0.3.0", package = "uu_printenv", path = "src/uu/printenv" }
printf = { optional = true, version = "0.3.0", package = "uu_printf", path = "src/uu/printf" }
ptx = { optional = true, version = "0.3.0", package = "uu_ptx", path = "src/uu/ptx" }
pwd = { optional = true, version = "0.3.0", package = "uu_pwd", path = "src/uu/pwd" }
readlink = { optional = true, version = "0.3.0", package = "uu_readlink", path = "src/uu/readlink" }
realpath = { optional = true, version = "0.3.0", package = "uu_realpath", path = "src/uu/realpath" }
rm = { optional = true, version = "0.3.0", package = "uu_rm", path = "src/uu/rm" }
rmdir = { optional = true, version = "0.3.0", package = "uu_rmdir", path = "src/uu/rmdir" }
runcon = { optional = true, version = "0.3.0", package = "uu_runcon", path = "src/uu/runcon" }
seq = { optional = true, version = "0.3.0", package = "uu_seq", path = "src/uu/seq" }
shred = { optional = true, version = "0.3.0", package = "uu_shred", path = "src/uu/shred" }
shuf = { optional = true, version = "0.3.0", package = "uu_shuf", path = "src/uu/shuf" }
sleep = { optional = true, version = "0.3.0", package = "uu_sleep", path = "src/uu/sleep" }
sort = { optional = true, version = "0.3.0", package = "uu_sort", path = "src/uu/sort" }
split = { optional = true, version = "0.3.0", package = "uu_split", path = "src/uu/split" }
stat = { optional = true, version = "0.3.0", package = "uu_stat", path = "src/uu/stat" }
stdbuf = { optional = true, version = "0.3.0", package = "uu_stdbuf", path = "src/uu/stdbuf" }
stty = { optional = true, version = "0.3.0", package = "uu_stty", path = "src/uu/stty" }
sum = { optional = true, version = "0.3.0", package = "uu_sum", path = "src/uu/sum" }
sync = { optional = true, version = "0.3.0", package = "uu_sync", path = "src/uu/sync" }
tac = { optional = true, version = "0.3.0", package = "uu_tac", path = "src/uu/tac" }
tail = { optional = true, version = "0.3.0", package = "uu_tail", path = "src/uu/tail" }
tee = { optional = true, version = "0.3.0", package = "uu_tee", path = "src/uu/tee" }
timeout = { optional = true, version = "0.3.0", package = "uu_timeout", path = "src/uu/timeout" }
touch = { optional = true, version = "0.3.0", package = "uu_touch", path = "src/uu/touch" }
tr = { optional = true, version = "0.3.0", package = "uu_tr", path = "src/uu/tr" }
true = { optional = true, version = "0.3.0", package = "uu_true", path = "src/uu/true" }
truncate = { optional = true, version = "0.3.0", package = "uu_truncate", path = "src/uu/truncate" }
tsort = { optional = true, version = "0.3.0", package = "uu_tsort", path = "src/uu/tsort" }
tty = { optional = true, version = "0.3.0", package = "uu_tty", path = "src/uu/tty" }
uname = { optional = true, version = "0.3.0", package = "uu_uname", path = "src/uu/uname" }
unexpand = { optional = true, version = "0.3.0", package = "uu_unexpand", path = "src/uu/unexpand" }
uniq = { optional = true, version = "0.3.0", package = "uu_uniq", path = "src/uu/uniq" }
unlink = { optional = true, version = "0.3.0", package = "uu_unlink", path = "src/uu/unlink" }
uptime = { optional = true, version = "0.3.0", package = "uu_uptime", path = "src/uu/uptime" }
users = { optional = true, version = "0.3.0", package = "uu_users", path = "src/uu/users" }
vdir = { optional = true, version = "0.3.0", package = "uu_vdir", path = "src/uu/vdir" }
wc = { optional = true, version = "0.3.0", package = "uu_wc", path = "src/uu/wc" }
who = { optional = true, version = "0.3.0", package = "uu_who", path = "src/uu/who" }
whoami = { optional = true, version = "0.3.0", package = "uu_whoami", path = "src/uu/whoami" }
yes = { optional = true, version = "0.3.0", package = "uu_yes", path = "src/uu/yes" }
[dev-dependencies]
chrono.workspace = true
ctor.workspace = true
filetime.workspace = true
glob.workspace = true
libc.workspace = true
num-prime.workspace = true
pretty_assertions = "1.4.0"
rand.workspace = true
regex.workspace = true
sha1 = { workspace = true, features = ["std"] }
tempfile.workspace = true
time = { workspace = true, features = ["local-offset"] }
unindent = "0.2.3"
uutests.workspace = true
uucore = { workspace = true, features = [
"mode",
"entries",
"process",
"signals",
"utmpx",
] }
walkdir.workspace = true
hex-literal = "1.0.0"
rstest.workspace = true
[target.'cfg(unix)'.dev-dependencies]
nix = { workspace = true, features = [
"process",
"signal",
"socket",
"user",
"term",
] }
rlimit = "0.10.1"
xattr.workspace = true
[target.'cfg(all(target_family= "unix",not(target_os = "macos")))'.dev-dependencies]
serde = { version = "1.0.202", features = ["derive"] }
bincode = { version = "2.0.1", features = ["serde"] }
serde-big-array = "0.5.1"
[build-dependencies]
phf_codegen.workspace = true
[[bin]]
name = "coreutils"
path = "src/bin/coreutils.rs"
[[bin]]
name = "uudoc"
path = "src/bin/uudoc.rs"
required-features = ["uudoc"]
[profile.release]
lto = true
[profile.release-fast]
inherits = "release"
panic = "abort"
codegen-units = 1
[profile.release-small]
inherits = "release-fast"
opt-level = "z"
strip = true
[profile.profiling]
inherits = "release"
debug = true
[lints]
workspace = true
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
use_self = "warn"
cargo_common_metadata = "allow"
multiple_crate_versions = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
must_use_candidate = "allow"
match_same_arms = "allow"
redundant_closure_for_method_calls = "allow"
cast_possible_truncation = "allow"
too_many_lines = "allow"
trivially_copy_pass_by_ref = "allow"
single_match_else = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
struct_excessive_bools = "allow"
cast_precision_loss = "allow"
cast_lossless = "allow"
unnecessary_wraps = "allow"
ignored_unit_patterns = "allow"
similar_names = "allow"
large_stack_arrays = "allow"
wildcard_imports = "allow"
used_underscore_binding = "allow"
needless_pass_by_value = "allow"
float_cmp = "allow"
items_after_statements = "allow"
return_self_not_must_use = "allow"
needless_continue = "allow"
inline_always = "allow"
fn_params_excessive_bools = "allow"
used_underscore_items = "allow"
should_panic_without_expect = "allow"
doc_markdown = "allow"
unused_self = "allow"
map_unwrap_or = "allow"
enum_glob_use = "allow"
ptr_cast_constness = "allow"
borrow_as_ptr = "allow"
ptr_as_ptr = "allow"
unnecessary_semicolon = "allow"
needless_raw_string_hashes = "allow"
unreadable_literal = "allow"
unnested_or_patterns = "allow"
implicit_hasher = "allow"
struct_field_names = "allow"
doc_link_with_quotes = "allow"
format_push_string = "allow"
flat_map_option = "allow"
from_iter_instead_of_collect = "allow"
large_types_passed_by_value = "allow"