# 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.6.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"]

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 }
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"
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
