[package]
name = "cp-cli"
version = "0.1.1"
description = "Human-first command-line client for competitive-programming platforms"
readme = "README.md"
homepage = "https://github.com/keys-i/cp-cli"
keywords = ["competitive-coding", "leetcode", "codeforces", "cli"]
categories = ["command-line-utilities", "development-tools"]
include = ["/src/**", "/Cargo.toml", "/Cargo.lock", "/README.md", "/LICENSE"]
edition = "2024"
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[lints]
workspace = true
[workspace]
members = [
"platforms/codechef",
"platforms/codeforces",
"platforms/hackerearth",
"platforms/hackerrank",
"platforms/leetcode",
"platforms/project-euler",
]
default-members = ["."]
resolver = "3"
[workspace.package]
edition = "2024"
rust-version = "1.88"
license = "MIT"
repository = "https://github.com/keys-i/cp-cli"
[workspace.lints.rust]
unsafe_code = "forbid"
unused_must_use = "deny"
[workspace.lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
thiserror = "2"
url = "2"
[features]
default = ["codechef", "codeforces", "hackerearth", "hackerrank", "leetcode", "project-euler"]
codechef = ["dep:platform-codechef"]
codeforces = ["dep:keyring", "dep:platform-codeforces"]
hackerrank = ["dep:platform-hackerrank"]
hackerearth = ["dep:platform-hackerearth"]
leetcode = ["dep:keyring", "dep:platform-leetcode"]
project-euler = ["dep:platform-project-euler"]
[dependencies]
anstream = "1"
anstyle = "1"
clap = { version = "4", features = ["derive"] }
console = "0.16.6"
crossterm = { version = "0.29", default-features = false, features = ["events", "windows"] }
htmd = "0.5.5"
indicatif = { version = "0.18", default-features = false, features = ["unicode-width"] }
keyring = { version = "4.2", optional = true }
markup5ever_rcdom = "0.38"
pulldown-cmark = { version = "0.12", default-features = false }
pulldown-cmark-mdcat = { version = "~2.12.0", default-features = false }
ratex-parser = "0.1.14"
syntect = { version = "5", default-features = false, features = ["default-syntaxes", "regex-fancy"] }
term-maths = "1"
terminal-colorsaurus = "1"
textwrap = { version = "0.16", default-features = false, features = ["unicode-linebreak", "unicode-width"] }
unicode-width = "0.2"
url.workspace = true
serde.workspace = true
serde_json = "1"
thiserror.workspace = true
tokio = { version = "1", default-features = false, features = ["macros", "rt", "time"] }
platform-codeforces = { package = "cp-cli-platform-codeforces", path = "platforms/codeforces", version = "=3.1.9", optional = true }
platform-codechef = { package = "cp-cli-platform-codechef", path = "platforms/codechef", version = "=3.1.9", optional = true }
platform-hackerrank = { package = "cp-cli-platform-hackerrank", path = "platforms/hackerrank", version = "=3.1.9", optional = true }
platform-hackerearth = { package = "cp-cli-platform-hackerearth", path = "platforms/hackerearth", version = "=3.1.9", optional = true }
platform-leetcode = { package = "cp-cli-platform-leetcode", path = "platforms/leetcode", version = "=3.1.9", optional = true }
platform-project-euler = { package = "cp-cli-platform-project-euler", path = "platforms/project-euler", version = "=3.1.9", optional = true }
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
panic = "abort"
strip = "debuginfo"
incremental = false
overflow-checks = true
[profile.release-max]
inherits = "release"
lto = "fat"
[profile.release-small]
inherits = "release"
opt-level = "s"
lto = "fat"