[package]
authors = ["The Nu Project Contributors"]
default-run = "nu"
description = "A new type of shell"
documentation = "https://www.nushell.sh/book/"
edition = "2018"
exclude = ["images"]
homepage = "https://www.nushell.sh"
license = "MIT"
name = "nu"
readme = "README.md"
repository = "https://github.com/nushell/nushell"
version = "0.59.1"

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

[workspace]
members = [
	"crates/nu-cli",
	"crates/nu-engine",
	"crates/nu-parser",
	"crates/nu-system",
	"crates/nu-command",
	"crates/nu-protocol",
	"crates/nu-plugin",
	"crates/nu_plugin_inc",
	"crates/nu_plugin_gstat",
	"crates/nu_plugin_example",
	"crates/nu_plugin_query",
]

[dependencies]
chrono = "0.4.19"
crossterm = "0.23.0"
crossterm_winapi = "0.9.0"
ctrlc = "3.2.1"
# lazy_static = "1.4.0"
log = "0.4"
miette = "4.1.0"
nu-ansi-term = "0.42.0"
nu-cli = { path="./crates/nu-cli", version = "0.59.1"  }
nu-color-config = { path = "./crates/nu-color-config", version = "0.59.1"  }
nu-command = { path="./crates/nu-command", version = "0.59.1"  }
nu-engine = { path="./crates/nu-engine", version = "0.59.1"  }
nu-json = { path="./crates/nu-json", version = "0.59.1"  }
nu-parser = { path="./crates/nu-parser", version = "0.59.1"  }
nu-path = { path="./crates/nu-path", version = "0.59.1"  }
nu-plugin = { path = "./crates/nu-plugin", optional = true, version = "0.59.1"  }
nu-pretty-hex = { path = "./crates/nu-pretty-hex", version = "0.59.1"  }
nu-protocol = { path = "./crates/nu-protocol", version = "0.59.1"  }
nu-system = { path = "./crates/nu-system", version = "0.59.1" }
nu-table = { path = "./crates/nu-table", version = "0.59.1"  }
nu-term-grid = { path = "./crates/nu-term-grid", version = "0.59.1"  }
pretty_env_logger = "0.4.0"
rayon = "1.5.1"
reedline = { git = "https://github.com/nushell/reedline", branch = "main" }
is_executable = "1.0.1"

# mimalloc = { version = "*", default-features = false }

# Plugins
nu_plugin_example = { version = "0.59.1", path = "./crates/nu_plugin_example", optional = true }
nu_plugin_gstat = { version = "0.59.1", path = "./crates/nu_plugin_gstat", optional = true }
nu_plugin_inc = { version = "0.59.1", path = "./crates/nu_plugin_inc", optional = true }
nu_plugin_query = { version = "0.59.1", path = "./crates/nu_plugin_query", optional = true }

[dev-dependencies]
nu-test-support = { path="./crates/nu-test-support" }
tempfile = "3.2.0"
assert_cmd = "2.0.2"
pretty_assertions = "1.0.0"
serial_test = "0.5.1"
hamcrest2 = "0.3.0"
rstest = "0.12.0"
itertools = "0.10.3"

[features]
plugin = ["nu-plugin", "nu-parser/plugin", "nu-command/plugin", "nu-protocol/plugin", "nu-engine/plugin"]
default = ["plugin", "inc", "example", "which"]
stable = ["default"]
extra = ["default", "dataframe", "gstat", "zip-support", "query", "trash-support"]
wasi = ["inc"]
trash-support = ["nu-command/trash-support"]

# Stable (Default)
inc = ["nu_plugin_inc"]
example = ["nu_plugin_example"]
which = ["nu-command/which"]

# Extra
gstat = ["nu_plugin_gstat"]
zip-support = ["nu-command/zip"]
query = ["nu_plugin_query"]

# Dataframe feature for nushell
dataframe = ["nu-command/dataframe"]

[profile.release]
opt-level = "s" # Optimize for size
strip = "debuginfo"

# build with `cargo build --profile profiling` 
# to analyze performance with tooling like linux perf
[profile.profiling]
inherits = "release"
strip = false
debug = true

# Main nu binary
[[bin]]
name = "nu"
path = "src/main.rs"
