# spell-checker:ignore (features) bigdecimal zerocopy extendedbigdecimal tzdb zoneinfo logind

[package]
name = "uucore"
description = "uutils ~ 'core' uutils code library (cross-platform)"
repository = "https://github.com/uutils/coreutils/tree/main/src/uucore"
authors.workspace = true
categories.workspace = true
edition.workspace = true
rust-version.workspace = true
homepage.workspace = true
keywords.workspace = true
license.workspace = true
version.workspace = true

[package.metadata.docs.rs]
all-features = true

[lints]
workspace = true

[lib]
path = "src/lib/lib.rs"

[dependencies]
bstr = { workspace = true, optional = true }
clap = { workspace = true }
uucore_procs = { workspace = true }
unit-prefix = { workspace = true, optional = true }
dns-lookup = { workspace = true, optional = true }
dunce = { version = "1.0.4", optional = true }
glob = { workspace = true, optional = true }
itertools = { workspace = true, optional = true }
jiff = { workspace = true, optional = true, features = [
  "tzdb-bundle-platform",
  "tzdb-zoneinfo",
  "tzdb-concatenated",
] }
rustc-hash = { workspace = true }
time = { workspace = true, optional = true, features = [
  "formatting",
  "local-offset",
  "macros",
] }
# * "problem" dependencies (pinned)
data-encoding = { version = "2.6", optional = true }
data-encoding-macro = { version = "0.1.15", optional = true }
z85 = { version = "3.0.5", optional = true }
base64-simd = { version = "0.8", optional = true }
libc = { workspace = true, optional = true }
os_display = "0.1.3"

# Benchmark dependencies (optional)
divan = { workspace = true, optional = true }
tempfile = { workspace = true, optional = true }

digest = { workspace = true, optional = true }
hex = { workspace = true, optional = true }
memchr = { workspace = true, optional = true }
md-5 = { workspace = true, optional = true }
sha1 = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
sha3 = { workspace = true, optional = true }
blake2b_simd = { workspace = true, optional = true }
blake3 = { workspace = true, optional = true }
sm3 = { workspace = true, optional = true }
crc-fast = { workspace = true, optional = true }
bigdecimal = { workspace = true, optional = true }
num-traits = { workspace = true, optional = true }
selinux = { workspace = true, optional = true }

# icu stuff
icu_calendar = { workspace = true, optional = true, features = [
  "compiled_data",
] }
icu_collator = { workspace = true, optional = true, features = [
  "compiled_data",
] }
icu_datetime = { workspace = true, optional = true, features = [
  "compiled_data",
] }
icu_decimal = { workspace = true, optional = true, features = [
  "compiled_data",
] }
icu_locale = { workspace = true, optional = true, features = ["compiled_data"] }
icu_provider = { workspace = true, optional = true }
jiff-icu = { workspace = true, optional = true }

# Fluent dependencies (always available for localization)
fluent = { workspace = true }
fluent-syntax = { workspace = true }
unic-langid = { workspace = true }
fluent-bundle = { workspace = true }
thiserror = { workspace = true }

[target.'cfg(unix)'.dependencies]
nix = { workspace = true, features = [
  "dir",
  "fs",
  "poll",
  "signal",
  "uio",
  "user",
  "zerocopy",
] }
walkdir = { workspace = true, optional = true }
xattr = { workspace = true, optional = true }

[dev-dependencies]
tempfile = { workspace = true }

[target.'cfg(target_os = "linux")'.dependencies]
procfs = { workspace = true, optional = true }

[target.'cfg(target_os = "windows")'.dependencies]
wild = "2.2.1"
winapi-util = { workspace = true, optional = true }
windows-sys = { workspace = true, optional = true, default-features = false, features = [
  "Wdk_System_SystemInformation",
  "Win32_Storage_FileSystem",
  "Win32_Foundation",
  "Win32_System_RemoteDesktop",
  "Win32_System_SystemInformation",
  "Win32_System_WindowsProgramming",
] }

[target.'cfg(target_os = "openbsd")'.dependencies]
utmp-classic = { workspace = true, optional = true }

[features]
default = ["signals"]
# * non-default features
backup-control = []
colors = []
checksum = ["quoting-style", "sum", "base64-simd"]
encoding = ["data-encoding", "data-encoding-macro", "z85", "base64-simd"]
entries = ["libc"]
extendedbigdecimal = ["bigdecimal", "num-traits"]
fast-inc = []
fs = ["dunce", "libc", "winapi-util", "windows-sys"]
fsext = ["libc", "windows-sys", "bstr"]
fsxattr = ["xattr", "itertools"]
hardware = []
lines = []
feat_systemd_logind = ["utmpx", "libc"]
format = [
  "bigdecimal",
  "extendedbigdecimal",
  "itertools",
  "parser-num",
  "num-traits",
  "quoting-style",
  "unit-prefix",
]
i18n-all = ["i18n-charmap", "i18n-collator", "i18n-decimal", "i18n-datetime"]
i18n-charmap = ["i18n-common"]
i18n-common = ["icu_locale"]
i18n-collator = ["i18n-common", "icu_collator"]
i18n-decimal = ["i18n-common", "icu_decimal", "icu_provider"]
i18n-datetime = [
  "i18n-common",
  "icu_calendar",
  "icu_datetime",
  "jiff-icu",
  "jiff",
]
mode = ["libc"]
perms = ["entries", "libc", "walkdir"]
buf-copy = []
parser-num = ["extendedbigdecimal", "num-traits"]
parser-size = ["parser-num", "procfs"]
parser-glob = ["glob"]
parser = ["parser-num", "parser-size", "parser-glob"]
pipes = []
process = ["libc"]
proc-info = ["tty", "walkdir"]
quoting-style = ["i18n-common"]
ranges = []
ringbuffer = []
safe-traversal = ["libc"]
selinux = ["dep:selinux"]
smack = ["xattr"]
signals = []
sum = [
  "digest",
  "hex",
  "memchr",
  "md-5",
  "sha1",
  "sha2",
  "sha3",
  "blake2b_simd",
  "blake3",
  "sm3",
  "crc-fast",
  "data-encoding",
]
update-control = ["parser"]
utf8 = []
utmpx = ["time", "time/macros", "libc", "dns-lookup"]
version-cmp = []
wide = []
tty = []
time = ["jiff"]
uptime = ["jiff", "libc", "windows-sys", "utmpx", "utmp-classic"]
benchmark = ["divan", "itertools", "tempfile"]
