[package]
name = "rtb-forge"
description = "Release-provider abstractions and backends (GitHub, GitLab, Bitbucket, Gitea, Codeberg, Direct) plus an async git-operations Repo built on gix. Part of the phpboyscout Rust toolkit."
version = "0.7.1"
edition = "2021"
rust-version = "1.82"
license = "MIT"
authors = ["Matt Cockayne <matt@phpboyscout.com>"]
repository = "https://gitlab.com/phpboyscout/rust/forge"
homepage = "https://forge.rust.phpboyscout.uk"
documentation = "https://docs.rs/rtb-forge"
readme = "README.md"
categories = ["development-tools", "api-bindings"]
keywords = ["git", "release", "github", "gitlab", "gitea"]
[lints.rust]
unsafe_code = "deny"
missing_docs = "warn"
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
multiple_crate_versions = "allow"
[features]
default = ["github", "gitlab", "gitea", "codeberg", "direct", "bitbucket", "git"]
github = ["_http"]
gitlab = ["_http"]
gitea = ["_http"]
codeberg = ["gitea"]
direct = ["_http"]
bitbucket = ["_http"]
git = ["dep:gix", "dep:rtb-credentials", "dep:futures-core"]
integration = []
_http = ["dep:reqwest", "dep:serde_json", "dep:bytes", "dep:futures-util", "dep:tokio-util"]
[dependencies]
tokio = { version = "1.53.0", features = ["full"] }
async-trait = "0.1.91"
miette = { version = "7.6.0", features = ["fancy"] }
thiserror = "2.0.19"
serde = { version = "1.0.229", features = ["derive"] }
semver = { version = "1.0.28", features = ["serde"] }
time = { version = "0.3.53", features = ["serde", "formatting", "parsing", "macros"] }
secrecy = "0.10.3"
linkme = "0.3.37"
reqwest = { version = "0.13.4", default-features = false, features = ["rustls", "json", "stream", "gzip"], optional = true }
serde_json = { version = "1.0.150", optional = true }
bytes = { version = "1.12.1", optional = true }
futures-util = { version = "0.3.33", optional = true }
tokio-util = { version = "0.7.18", features = ["io"], optional = true }
gix = { version = "0.85.0", default-features = false, features = [
"blocking-network-client",
"blocking-http-transport-reqwest-rust-tls",
"parallel",
"extras",
"sha1",
"blame",
], optional = true }
rtb-credentials = { version = "0.6.0", optional = true }
futures-core = { version = "0.3.33", optional = true }
[dev-dependencies]
cucumber = { version = "0.23.0", features = ["macros"] }
serde_yaml = "0.9.34"
serde_json = "1.0.150"
reqwest = { version = "0.13.4", default-features = false, features = ["rustls", "json", "stream", "gzip", "multipart"] }
wiremock = "0.6.5"
testcontainers = "0.27.3"
tempfile = "3.27.0"
futures = "0.3.33"