[package]
name = "mago"
version = "0.0.16"
edition = "2021"
authors = ["Saif Eddin Gmati <azjezz@protonmail.com>"]
license = "MIT OR Apache-2.0"
description = "A comprehensive suite of PHP tooling inspired by Rust’s approach, providing parsing, linting, formatting, and more through a unified CLI and library interface."
homepage = "https://github.com/carthage-software/mago"
repository = "https://github.com/carthage-software/mago"
rust-version = "1.83.0"

[workspace]
package.edition = "2021"
package.authors = ["Saif Eddin Gmati <azjezz@protonmail.com>"]
package.license = "MIT OR Apache-2.0"
package.version = "0.0.16"
package.homepage = "https://github.com/carthage-software/mago"
package.repository = "https://github.com/carthage-software/mago"
package.rust-version = "1.83.0"
members = ["crates/*"]

[workspace.lints.clippy]
# ast nodes are large enums, we want to keep them as is ( for now )
large_enum_variant = { level = "allow" }

[workspace.dependencies]
mago-ast = { path = "crates/ast", version = "0.0.16" }
mago-ast-utils = { path = "crates/ast-utils", version = "0.0.16" }
mago-casing = { path = "crates/casing", version = "0.0.16" }
mago-composer = { path = "crates/composer", version = "0.0.16" }
mago-docblock = { path = "crates/docblock", version = "0.0.16" }
mago-feedback = { path = "crates/feedback", version = "0.0.16" }
mago-fixer = { path = "crates/fixer", version = "0.0.16" }
mago-formatter = { path = "crates/formatter", version = "0.0.16" }
mago-interner = { path = "crates/interner", version = "0.0.16" }
mago-lexer = { path = "crates/lexer", version = "0.0.16" }
mago-linter = { path = "crates/linter", version = "0.0.16" }
mago-names = { path = "crates/names", version = "0.0.16" }
mago-parser = { path = "crates/parser", version = "0.0.16" }
mago-reflection = { path = "crates/reflection", version = "0.0.16" }
mago-reflector = { path = "crates/reflector", version = "0.0.16" }
mago-reporting = { path = "crates/reporting", version = "0.0.16" }
mago-semantics = { path = "crates/semantics", version = "0.0.16" }
mago-source = { path = "crates/source", version = "0.0.16" }
mago-span = { path = "crates/span", version = "0.0.16" }
mago-symbol-table = { path = "crates/symbol-table", version = "0.0.16" }
mago-token = { path = "crates/token", version = "0.0.16" }
mago-traverser = { path = "crates/traverser", version = "0.0.16" }
mago-trinary = { path = "crates/trinary", version = "0.0.16" }
mago-typing = { path = "crates/typing", version = "0.0.16" }
mago-walker = { path = "crates/walker", version = "0.0.16" }
mago-wasm = { path = "crates/wasm", version = "0.0.16" }
dashmap = { version = "6.1.0" }
tracing = { version = "0.1.40" }
ahash = { version = "0.8.11" }
getrandom = { version = "0.2", features = ["js"] }
serde_json = { version = "1.0.128" }
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.39.3", features = ["rt", "time"] }
strum = { version = "0.26", features = ["derive"] }
ordered-float = { version = "4.0", default-features = false, features = [
    "serde",
] }
pretty_assertions = { version = "1.4.1" }
either = { version = "1.13.0" }
codespan-reporting = { version = "0.11.1", features = [
    "serde",
    "serialization",
] }
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
config = { version = "0.15.4", features = ["toml"] }
toml = { version = "0.8.19" }
num_cpus = "1.16.0"
regex = "1.11.0"
cruet = "0.14.0"
indicatif = { version = "0.17.8", features = ["tokio"] }
glob-match = "0.2.1"
paste = "1.0.15"
criterion = "0.5.1"
lasso = { version = "0.7.3", features = [
    "multi-threaded",
    "ahasher",
    "inline-more",
] }
clap = { version = "4.5.20", features = [
    "cargo",
    "derive",
    "unicode",
    "wrap_help",
] }
futures = "0.3.31"
async-walkdir = "2.0.0"
termtree = "0.5.1"
bitflags = "2.6.0"
wasm-bindgen = "0.2.97"
serde-wasm-bindgen = "0.4"
diffy = "0.4.0"
termcolor = "1.4.1"
indoc = "2"
self_update = { version = "0.41.0", features = [
    "archive-tar",
    "archive-zip",
    "compression-flate2",
] }
openssl = { version = "0.10", features = ["vendored"] }

[lints]
workspace = true

[dependencies]
mago-ast = { workspace = true }
mago-reporting = { workspace = true }
mago-interner = { workspace = true }
mago-source = { workspace = true }
mago-feedback = { workspace = true }
mago-semantics = { workspace = true }
mago-linter = { workspace = true }
mago-reflection = { workspace = true }
mago-names = { workspace = true }
mago-reflector = { workspace = true }
mago-span = { workspace = true }
mago-formatter = { workspace = true }
mago-parser = { workspace = true }
mago-fixer = { workspace = true }
serde = { workspace = true }
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "time"] }
clap = { workspace = true }
ahash = { workspace = true }
termtree = { workspace = true }
serde_json = { workspace = true }
strum = { workspace = true }
self_update = { workspace = true }
async-walkdir = { workspace = true }
futures = { workspace = true }
glob-match = { workspace = true }
tracing = { workspace = true }
config = { workspace = true }
toml = { workspace = true }
num_cpus = { workspace = true }
diffy = { workspace = true }

[target.'cfg(target_os = "linux")'.dependencies]
openssl = { workspace = true }

[profile.release]
opt-level = 3
debug = false
strip = 'symbols'
debug-assertions = false
overflow-checks = false
lto = 'fat'
panic = 'abort'
incremental = true
codegen-units = 1
rpath = true
