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

[workspace]
members = ["crates/*/"]

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

[dependencies]
nu-cli = { version = "0.15.1", path = "./crates/nu-cli" }
nu-source = { version = "0.15.1", path = "./crates/nu-source" }
nu-plugin = { version = "0.15.1", path = "./crates/nu-plugin" }
nu-protocol = { version = "0.15.1", path = "./crates/nu-protocol" }
nu-errors = { version = "0.15.1", path = "./crates/nu-errors" }
nu-parser = { version = "0.15.1", path = "./crates/nu-parser" }
nu-value-ext = { version = "0.15.1", path = "./crates/nu-value-ext" }
nu_plugin_binaryview = { version = "0.15.1", path = "./crates/nu_plugin_binaryview", optional=true }
nu_plugin_fetch = { version = "0.15.1", path = "./crates/nu_plugin_fetch", optional=true }
nu_plugin_inc = { version = "0.15.1", path = "./crates/nu_plugin_inc", optional=true }
nu_plugin_match = { version = "0.15.1", path = "./crates/nu_plugin_match", optional=true }
nu_plugin_post = { version = "0.15.1", path = "./crates/nu_plugin_post", optional=true }
nu_plugin_ps = { version = "0.15.1", path = "./crates/nu_plugin_ps", optional=true }
nu_plugin_start = { version = "0.15.1", path = "./crates/nu_plugin_start", optional=true }
nu_plugin_sys = { version = "0.15.1", path = "./crates/nu_plugin_sys", optional=true }
nu_plugin_textview = { version = "0.15.1", path = "./crates/nu_plugin_textview", optional=true }
nu_plugin_tree = { version = "0.15.1", path = "./crates/nu_plugin_tree", optional=true }

crossterm = { version = "0.17.5", optional = true }
semver = { version = "0.10.0", optional = true }
syntect = { version = "4.2", default-features = false, features = ["default-fancy"], optional = true}
url = { version = "2.1.1", optional = true }

clap = "2.33.1"
ctrlc = "3.1.4"
dunce = "1.0.0"
futures = { version = "0.3", features = ["compat", "io-compat"] }
log = "0.4.8"
pretty_env_logger = "0.4.0"
starship = "0.42.0"

[dev-dependencies]
nu-test-support = { version = "0.15.1", path = "./crates/nu-test-support" }

[build-dependencies]
toml = "0.5.6"
serde = { version = "1.0.110", features = ["derive"] }
nu-build = { version = "0.15.1", path = "./crates/nu-build" }

[features]
default = ["sys", "ps", "textview", "inc"]
stable = ["default", "binaryview", "match", "tree", "post", "fetch", "clipboard-cli", "trash-support", "start"]

# Default
textview = ["crossterm", "syntect", "url", "nu_plugin_textview"]
sys = ["nu_plugin_sys"]
ps = ["nu_plugin_ps"]
inc = ["semver", "nu_plugin_inc"]

# Stable
binaryview = ["nu_plugin_binaryview"]
fetch = ["nu_plugin_fetch"]
match = ["nu_plugin_match"]
post = ["nu_plugin_post"]
trace = ["nu-parser/trace"]
tree = ["nu_plugin_tree"]
start = ["nu_plugin_start"]

clipboard-cli = ["nu-cli/clipboard-cli"]
# starship-prompt = ["nu-cli/starship-prompt"]
trash-support = ["nu-cli/trash-support"]

# Core plugins that ship with `cargo install nu` by default
# Currently, Cargo limits us to installing only one binary
# unless we use [[bin]], so we use this as a workaround
[[bin]]
name = "nu_plugin_core_textview"
path = "src/plugins/nu_plugin_core_textview.rs"
required-features = ["textview"]

[[bin]]
name = "nu_plugin_core_inc"
path = "src/plugins/nu_plugin_core_inc.rs"
required-features = ["inc"]

[[bin]]
name = "nu_plugin_core_ps"
path = "src/plugins/nu_plugin_core_ps.rs"
required-features = ["ps"]

[[bin]]
name = "nu_plugin_core_sys"
path = "src/plugins/nu_plugin_core_sys.rs"
required-features = ["sys"]

# Stable plugins
[[bin]]
name = "nu_plugin_stable_fetch"
path = "src/plugins/nu_plugin_stable_fetch.rs"
required-features = ["fetch"]

[[bin]]
name = "nu_plugin_stable_binaryview"
path = "src/plugins/nu_plugin_stable_binaryview.rs"
required-features = ["binaryview"]

[[bin]]
name = "nu_plugin_stable_match"
path = "src/plugins/nu_plugin_stable_match.rs"
required-features = ["match"]

[[bin]]
name = "nu_plugin_stable_post"
path = "src/plugins/nu_plugin_stable_post.rs"
required-features = ["post"]

[[bin]]
name = "nu_plugin_stable_tree"
path = "src/plugins/nu_plugin_stable_tree.rs"
required-features = ["tree"]

[[bin]]
name = "nu_plugin_stable_start"
path = "src/plugins/nu_plugin_stable_start.rs"
required-features = ["start"]

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