# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

[workspace]
members = [
    ".",
    "e2e",
]

[package]
name = "skywalking"
version = "0.7.0"
authors = ["Apache Software Foundation"]
edition = "2021"
description = "Apache SkyWalking Rust Agent"
license = "Apache-2.0"
homepage = "https://skywalking.apache.org/"
repository = "https://github.com/apache/skywalking-rust"
rust-version = "1.65"

[features]
management = ["hostname", "systemstat"]
vendored = ["protobuf-src"]
kafka-reporter = ["rdkafka"]

mock = []  # For internal integration testing only, do not use.

[dependencies]
base64 = "0.13.0"
bytes = "1.2.1"
cfg-if = "1.0.0"
futures-core = "0.3.21"
futures-util = "0.3.21"
hostname = { version = "0.3.1", optional = true }
libz-sys = "1.1.9"
once_cell = "1.14.0"
parking_lot = "0.12.1"
portable-atomic = { version = "0.3.13", features = ["float"] }
prost = "0.11.0"
prost-derive = "0.11.0"
rdkafka = { version = "0.32.2", optional = true }
serde = { version = "1.0.143", features = ["derive"] }
systemstat = { version = "0.2.0", optional = true }
thiserror = "1.0.32"
tokio = { version = "1.20.1", features = ["parking_lot"] }
tokio-stream = { version = "0.1.9", features = ["time"] }
tonic = { version = "0.8.0", features = ["codegen"] }
tracing = "0.1.36"
uuid = { version = "1.1.2", features = ["serde", "v4"] }

[build-dependencies]
protobuf-src = { version = "1.0.5", optional = true }
tonic-build = "0.8.0"

[dev-dependencies]
tokio = { version = "1.20.1", features = ["rt-multi-thread", "signal"] }
tokio-stream = { version = "0.1.9", features = ["net"] }

[[test]]
name = "trace_context"
required-features = ["mock"]

[[test]]
name = "logging"
required-features = ["mock"]

[[test]]
name = "metrics"
required-features = ["mock"]

[[test]]
name = "management"
required-features = ["management"]

[[example]]
name = "simple_trace_report"
path = "examples/simple_trace_report.rs"

[[example]]
name = "simple_management_report"
path = "examples/simple_management_report.rs"
required-features = ["management"]

[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
all-features = true
