[workspace]
members = [
  "crates/vfox",
  "crates/aqua-registry",
  "crates/mise-interactive-config",
  "crates/mise-shim",
  "crates/mise-sigstore",
]

[package]
name = "mise"
version = "2026.5.12"
edition = "2024"
description = "Dev tools, env vars, and tasks in one CLI"
authors = ["Jeff Dickey (@jdx)"]
homepage = "https://mise.en.dev"
documentation = "https://mise.en.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/**",
  "/vendor/aqua-registry/LICENSE",
  "/vendor/aqua-registry/metadata.json",
  "/vendor/aqua-registry/registry.yml",
]
build = "build.rs"
rust-version = "1.91"

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

[[bin]]
name = "mise"
path = "src/main.rs"
# debug = 0 # note that higher levels greatly increase the binary size for linux

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

[dependencies]
age = { version = "0.11", features = ["ssh"] }
aho-corasick = "1"
async-backtrace = "0.2"
async-trait = "0.1"
aws-config = { version = "1.5", default-features = false, features = [
  "behavior-version-latest",
  "default-https-client",
  "rt-tokio",
  "sso",
] }
aws-lc-rs = { version = "1", optional = true, features = [
  "bindgen",
] } # TODO: this is only for armv7 currently
aws-sdk-s3 = { version = "1", default-features = false, features = [
  "behavior-version-latest",
  "default-https-client",
] }
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"
confique = { version = "0.4", default-features = false }
console = "0.16"
contracts = "0.6"
dashmap = "6"
demand = "2"
digest = "0.11.0"
dotenvy = "0.15"
duct = "1.0"
homedir = "0.3"
expr-lang = "1"
eyre = "0.6"
filetime = "0.2"
flate2 = "1"
mise-sigstore = { default-features = false, version = "2026.5.3" }
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"
hex = "0.4"
humansize = "2"
indenter = "0.3"
indexmap = { version = "2", features = ["serde"] }
clx = "2"
indoc = "2"
itertools = "0.14"
jiff = "0.2"
junction = "2"
log = "0.4"
minisign-verify = "0.2"
md-5 = "0.11"
miette = { version = "7", features = ["fancy"] }
netrc-rs = "0.1"
nodejs-semver = "4.2"
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"
phf = "0.13"
rand = "0.10"
rattler = { version = "0.42", default-features = false }
rattler_conda_types = { version = "0.46", default-features = false }
rattler_repodata_gateway = { version = "0.28", default-features = false, features = [
  "gateway",
] }
rattler_solve = { version = "6", default-features = false, features = [
  "resolvo",
] }
rattler_package_streaming = { version = "0.25", default-features = false }
rattler_virtual_packages = { version = "2", default-features = false }
regex = "1"
reqwest = { version = "0.13", default-features = false, features = [
  "json",
  "form",
  "gzip",
  "zstd",
  "charset",
  "http2",
  "socks",
  "system-proxy",
] }
rmcp = { version = "1.0", features = ["server", "transport-io", "schemars"] }
rmp-serde = "1"
rops = { version = "0.1", default-features = false, features = [
  "aes-gcm",
  "sha2",
  "yaml",
  "json",
  "age",
] }
serde = { version = "1", features = ["derive"] }
serde_ignored = "0.1"
serde_json = "1"
serde_yaml = "0.9"
sha1 = "0.11"
sha2 = "0.11"
blake3 = "1"
chacha20poly1305 = "0.10"
shell-escape = "0.1"
shell-words = "1"
shellexpand = "3"
signal-hook = "0.4"
siphasher = "1"
strum = { version = "0.28", features = ["derive"] }
supports-hyperlinks = "3"
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"] }
toml = { version = "1.0", features = ["parse", "preserve_order"] }
toml_edit = { version = "0.25", features = ["parse"] }
ubi = { version = "0.9", default-features = false }
url = "2"
urlencoding = "2"
usage-lib = { version = "3", features = ["clap", "docs"] }
versions = { version = "7", features = ["serde"] }
vfox = { default-features = false, version = "2026.5.11" }
mise-interactive-config = { version = "2026.4.2" }
walkdir = "2"
which = "8"
xx = { version = "2.5", default-features = false, features = ["glob"] }
xz2 = "0.1"
zip = { version = "8", default-features = false, features = ["deflate"] }
zstd = "0.13"
aqua-registry = "2026.5.8"

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

[target.'cfg(target_os = "linux")'.dependencies]
landlock = "0.4"
seccompiler = "0.5"

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

[build-dependencies]
aqua-registry = "2026.5.8"
built = { version = "0.8", features = ["chrono"] }
cfg_aliases = "0.2"
eyre = "0.6"
heck = "0.5"
indexmap = "2"
phf_codegen = "0.13"
serde = "1"
serde_yaml = "0.9"
toml = "1.0"

[dev-dependencies]
clap-sort = "1"
ctor = "1"
insta = { version = "1", features = ["filters", "json"] }
mockito = "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",
  "rattler/native-tls",
  "rattler_repodata_gateway/native-tls",
  "mise-sigstore/native-tls",
  "ubi/native-tls",
  "vfox/native-tls",
  "xx/native-tls",
]
rustls = [
  "gix/blocking-http-transport-reqwest-rust-tls",
  "reqwest/rustls",
  "rattler/rustls-tls",
  "rattler_repodata_gateway/rustls-tls",
  "mise-sigstore/rustls",
  "ubi/rustls-tls",
  "vfox/rustls",
  "xx/rustls",
]
rustls-native-roots = [
  "gix/blocking-http-transport-reqwest-rust-tls",
  "reqwest/rustls",
  "rattler/rustls-tls",
  "rattler_repodata_gateway/rustls-tls",
  "mise-sigstore/rustls",
  "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", "phf_codegen"]

[package.metadata.release]
pre-release-replacements = [
  { file = "docs/installing-mise.md", search = "MISE_VERSION=v[0-9]+\\.[0-9]+\\.[0-9]+", replace = "MISE_VERSION=v{{version}}" },
  { file = "docs/installing-mise.md", search = "/download/v[0-9]+\\.[0-9]+\\.[0-9]+/mise-v[0-9]+\\.[0-9]+\\.[0-9]+-linux-x64", replace = "/download/v{{version}}/mise-v{{version}}-linux-x64" },
]

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

[lints.clippy]
borrowed_box = "allow"

[profile.dev]
debug = 1
