[workspace]
members = ["crates/vfox", "crates/aqua-registry"]

[package]
name = "mise"
version = "2025.12.7"
edition = "2024"
description = "The front-end to your dev env"
authors = ["Jeff Dickey (@jdx)"]
homepage = "https://mise.jdx.dev"
documentation = "https://mise.jdx.dev"
repository = "https://github.com/jdx/mise"
readme = "README.md"
license = "MIT"
keywords = ["mise"]
categories = ["command-line-utilities"]
include = [
  "/Cargo.lock",
  "/LICENSE",
  "/README.md",
  "/build.rs",
  "/completions/*",
  "/minisign.pub",
  "/registry.toml",
  "/settings.toml",
  "/zipsign.pub",
  "/src/**/*.rs",
  "/src/assets/**",
  "/src/plugins/core/assets/**",
]
build = "build.rs"
rust-version = "1.88"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[[bin]]
name = "mise"
path = "src/main.rs"

#[[bench]]
#name = "config_bench"
#harness = false

[profile.release]
# debug = 0 # note that higher levels greatly increase the binary size for linux

[profile.serious]
inherits = "release"
lto = true

[profile.dev.package.backtrace]
opt-level = 3

[dependencies]
age = { version = "0.11", features = ["ssh"] }
anyhow = "1.0.100"
async-backtrace = "0.2"
async-trait = "0.1"
aws-lc-rs = { version = "1", optional = true, features = [
  "bindgen",
] } # TODO: this is only for armv7 currently
base64 = "0.22"
bzip2 = "0.6"
calm_io = "0.1"
chrono = { version = "0.4", default-features = false, features = [
  "std",
  "clock",
] }
ci_info = "0.14"
clap = { version = "4", features = ["env", "derive", "string"] }
color-eyre = "0.6"
color-print = "0.3"
comfy-table = "7.1.3"
confique = { version = "0.3", default-features = false }
console = "0.16"
contracts = "0.6"
dashmap = "6"
demand = "1"
digest = "0.10.7"
dotenvy = "0.15"
duct = "0.13"
homedir = "0.3"
eyre = "0.6"
filetime = "0.2"
flate2 = "1"
sigstore-verification = { version = "0.1", default-features = false }
fslock = "0.2.1"
fuzzy-matcher = "0.3"
gix = { version = "<1", features = ["worktree-mutation"] }
glob = "0.3"
globset = "0.4"
ignore = { version = "0.4", features = [] }
heck = "0.5"
humansize = "2"
indenter = "0.3"
indexmap = { version = "2", features = ["serde"] }
indicatif = { version = "0.18", features = ["improved_unicode"] }
indoc = "2"
itertools = "0.14"
jiff = "0.2"
junction = "1"
log = "0.4"
minisign-verify = "0.2"
md-5 = "0.10"
netrc-rs = "0.1"
num_cpus = "1"
number_prefix = "0.4"
once_cell = "1"
openssl = { version = "0.10", optional = true }
os-release = "0.1"
path-absolutize = { version = "3", features = ["unsafe_cache"] }
petgraph = "0.8"
rand = "0.9"
regex = "1"
reqwest = { version = "0.12", default-features = false, features = [
  "json",
  "gzip",
  "zstd",
  "charset",
  "http2",
  "socks",
  "macos-system-configuration",
] }
rmcp = { version = "0.3", features = ["server", "transport-io", "schemars"] }
rmcp-macros = "0.3"
rmp-serde = "1"
rops = { version = "0.1", default-features = false, features = [
  "aes-gcm",
  "sha2",
  "yaml",
  "json",
  "age",
] }
serde = "1"
serde_derive = "1"
serde_ignored = "0.1"
serde_json = "1"
serde_yaml = "0.9"
sha1 = "0.10"
sha2 = "0.10"
blake3 = "1"
shell-escape = "0.1"
shell-words = "1"
signal-hook = "0.3"
siphasher = "1"
strum = { version = "0.27", features = ["derive"] }
sys-info = "0.9"
tabled = { version = "0.20", features = ["ansi"] }
taplo = "0.14"
tar = "0.4"
tempfile = "3"
tera = "1"
terminal_size = "0.4"
thiserror = "2"
tokio = { version = "1", features = ["full"] }
tokio-retry = "0.3"
toml = { version = "0.8", features = ["parse"] }
toml_edit = { version = "0.22", features = ["parse"] }
ubi = { version = "0.8", default-features = false }
url = "2"
urlencoding = "2.1.3"
usage-lib = { version = "2", features = ["clap", "docs"] }
versions = { version = "6", features = ["serde"] }
vfox = { default-features = false, version = "2025.12.7" }
aqua-registry = "2025.12.7"
walkdir = "2"
which = "7"
xx = { version = "2", default-features = false, features = ["glob"] }
xz2 = "0.1"
zip = { version = "3", default-features = false, features = ["deflate"] }
zstd = "0.13"

[target.'cfg(unix)'.dependencies]
exec = "0.3"
nix = { version = "0.30", features = ["signal", "user"] }
self_update = { version = "0.42", optional = true, default-features = false, features = [
  "archive-tar",
  "compression-flate2",
  "signatures",
  "rustls",
] }

[target.'cfg(windows)'.dependencies]
self_update = { version = "0.42", optional = true, default-features = false, features = [
  "archive-zip",
  "compression-zip-deflate",
  "signatures",
  "rustls",
] }
sevenz-rust = "0.6"
winapi = { version = "0.3.9", features = ["consoleapi", "minwindef"] }

[build-dependencies]
built = { version = "0.8", features = ["chrono"] }
cfg_aliases = "0.2"
heck = "0.5"
toml = "0.8"
indexmap = "2"
serde_yaml = "0.9"

[dev-dependencies]
clap-sort = "1"
ctor = "0.4"
insta = { version = "1", features = ["filters", "json"] }
mockito = "1.6.1"
pretty_assertions = "1"
test-log = "0.2"

[features]
default = ["native-tls", "vfox/vendored-lua", "self_update"]
native-tls = [
  "gix/blocking-http-transport-reqwest-native-tls",
  "reqwest/native-tls",
  "sigstore-verification/native-tls",
  "ubi/native-tls",
  "vfox/native-tls",
  "xx/native-tls",
]
rustls = [
  "gix/blocking-http-transport-reqwest-rust-tls",
  "reqwest/rustls-tls",
  "self_update/rustls",
  "sigstore-verification/rustls",
  "ubi/rustls-tls",
  "vfox/rustls",
  "xx/rustls",
]
rustls-native-roots = [
  "gix/blocking-http-transport-reqwest-rust-tls",
  "reqwest/rustls-tls-native-roots",
  "self_update/rustls",
  "sigstore-verification/rustls-native-roots",
  "ubi/rustls-tls-native-roots",
  "vfox/rustls-native-roots",
  "xx/rustls-native-roots",
]

[package.metadata.binstall]
bin-dir = "mise/bin/mise"
[package.metadata.binstall.overrides.aarch64-apple-darwin]
pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-macos-arm64{ archive-suffix }"
[package.metadata.binstall.overrides.x86_64-apple-darwin]
pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-macos-x64{ archive-suffix }"
[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu]
pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-arm64{ archive-suffix }"
[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu]
pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-x64{ archive-suffix }"
[package.metadata.binstall.overrides.armv7-unknown-linux-gnueabihf]
pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-armv7{ archive-suffix }"

[package.metadata.cargo-machete]
ignored = ["aws-lc-rs", "built", "cfg_aliases", "openssl", "rmcp-macros"]

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = [
  'cfg(coverage,coverage_nightly)',
] }

[lints.clippy]
borrowed_box = "allow"
