[workspace]
resolver = "2"
members = [
  "crates/*",
  "credential/*",
  "benches/benchsuite",
  "benches/capture",
]
exclude = [
  "target/", # exclude bench testing
]

[workspace.dependencies]
anyhow = "1.0.47"
base64 = "0.21.0"
bytesize = "1.0"
cargo = { path = "" }
cargo-credential = { version = "0.2.0", path = "credential/cargo-credential" }
cargo-platform = { path = "crates/cargo-platform", version = "0.1.3" }
cargo-test-macro = { path = "crates/cargo-test-macro" }
cargo-test-support = { path = "crates/cargo-test-support" }
cargo-util = { version = "0.2.4", path = "crates/cargo-util" }
cargo_metadata = "0.14.0"
clap = "4.2.0"
core-foundation = { version = "0.9.0", features = ["mac_os_10_7_support"] }
crates-io = { version = "0.37.0", path = "crates/crates-io" }
criterion = { version = "0.3.5", features = ["html_reports"] }
curl = "0.4.44"
curl-sys = "0.4.61"
env_logger = "0.10.0"
filetime = "0.2.9"
flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] }
fwdansi = "1.1.0"
git2 = "0.17.1"
git2-curl = "0.18.0"
gix = { version = "0.44.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree"] }
gix-features-for-configuration-only = { version = "0.29.0", package = "gix-features", features = [ "parallel" ] }
glob = "0.3.0"
handlebars = { version = "3.2.1", features = ["dir_source"] }
hex = "0.4.2"
hmac = "0.12.1"
home = "0.5.5"
http-auth = { version = "0.1.6", default-features = false }
humantime = "2.0.0"
ignore = "0.4.7"
im-rc = "15.0.0"
indexmap = "1"
is-terminal = "0.4.4"
itertools = "0.10.0"
jobserver = "0.1.26"
lazy_static = "1.3.0"
lazycell = "1.2.0"
libc = "0.2.144"
libgit2-sys = "0.15.1"
log = "0.4.17"
memchr = "2.1.3"
miow = "0.5.0"
opener = "0.5"
openssl ="0.10.50"
os_info = "3.5.0"
pasetors = { version = "0.6.4", features = ["v3", "paserk", "std", "serde"] }
pathdiff = "0.2"
percent-encoding = "2.0"
pkg-config = "0.3.19"
pretty_assertions = "1.3.0"
pretty_env_logger = "0.4"
proptest = "1.1.0"
pulldown-cmark = { version = "0.9.2", default-features = false }
rand = "0.8.5"
rustfix = "0.6.0"
same-file = "1.0.6"
security-framework = "2.0.0"
semver = { version = "1.0.3", features = ["serde"] }
serde = "1.0.123"
serde-value = "0.7.0"
serde_ignored = "0.1.0"
serde_json = "1.0.59"
sha1 = "0.10.5"
sha2 = "0.10.6"
shell-escape = "0.1.4"
snapbox = { version = "0.4.0", features = ["diff", "path"] }
strip-ansi-escapes = "0.1.0"
tar = { version = "0.4.38", default-features = false }
tempfile = "3.1.0"
termcolor = "1.1.2"
time = { version = "0.3", features = ["parsing", "formatting"] }
toml = "0.7.0"
toml_edit = "0.19.0"
unicode-width = "0.1.5"
unicode-xid = "0.2.0"
url = "2.2.2"
varisat = "0.2.1"
walkdir = "2.3.1"
windows-sys = "0.48"

[package]
name = "cargo"
version = "0.72.1"
edition = "2021"
license = "MIT OR Apache-2.0"
homepage = "https://crates.io"
repository = "https://github.com/rust-lang/cargo"
documentation = "https://docs.rs/cargo"
readme = "README.md"
description = """
Cargo, a package manager for Rust.
"""

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

[dependencies]
anyhow.workspace = true
base64.workspace = true
bytesize.workspace = true
cargo-platform.workspace = true
cargo-util.workspace = true
clap = { workspace = true, features = ["wrap_help"] }
crates-io.workspace = true
curl = { workspace = true, features = ["http2"] }
curl-sys.workspace = true
env_logger.workspace = true
filetime.workspace = true
flate2.workspace = true
git2.workspace = true
git2-curl.workspace = true
gix.workspace = true
gix-features-for-configuration-only.workspace = true
glob.workspace = true
hex.workspace = true
hmac.workspace = true
home.workspace = true
http-auth.workspace = true
humantime.workspace = true
ignore.workspace = true
im-rc.workspace = true
indexmap.workspace = true
is-terminal.workspace = true
itertools.workspace = true
jobserver.workspace = true
lazy_static.workspace = true
lazycell.workspace = true
libc.workspace = true
libgit2-sys.workspace = true
log.workspace = true
memchr.workspace = true
opener.workspace = true
os_info.workspace = true
pasetors.workspace = true
pathdiff.workspace = true
pretty_env_logger = { workspace = true, optional = true }
rand.workspace = true
rustfix.workspace = true
semver.workspace = true
serde = { workspace = true, features = ["derive"] }
serde-value.workspace = true
serde_ignored.workspace = true
serde_json = { workspace = true, features = ["raw_value"] }
sha1.workspace = true
shell-escape.workspace = true
strip-ansi-escapes.workspace = true
tar.workspace = true
tempfile.workspace = true
termcolor.workspace = true
time.workspace = true
toml.workspace = true
toml_edit.workspace = true
unicode-width.workspace = true
unicode-xid.workspace = true
url.workspace = true
walkdir.workspace = true

[target.'cfg(not(windows))'.dependencies]
openssl = { workspace = true, optional = true }

[target.'cfg(windows)'.dependencies]
fwdansi.workspace = true

[target.'cfg(windows)'.dependencies.windows-sys]
workspace = true
features = [
  "Win32_Foundation",
  "Win32_Storage_FileSystem",
  "Win32_System_Console",
  "Win32_System_IO",
  "Win32_System_Threading",
  "Win32_System_JobObjects",
  "Win32_Security",
  "Win32_System_SystemServices"
]

[dev-dependencies]
cargo-test-macro.workspace = true
cargo-test-support.workspace = true
same-file.workspace = true
snapbox.workspace = true

[build-dependencies]
flate2.workspace = true
tar.workspace = true

[[bin]]
name = "cargo"
test = false
doc = false

[features]
vendored-openssl = ["openssl/vendored"]
vendored-libgit2 = ["libgit2-sys/vendored"]
pretty-env-logger = ["pretty_env_logger"]
# This is primarily used by rust-lang/rust distributing cargo the executable.
all-static = ['vendored-openssl', 'curl/static-curl', 'curl/force-system-lib-on-osx']
