clashctl 0.3.0-alpha.3

A TUI & CLI to interact with clash RESTful API
Documentation
cargo-features = ["strip"]

[package]
name = "clashctl"
description = "A TUI & CLI to interact with clash RESTful API"
version = "0.3.0-alpha.3"
authors = ["George Miao <gm@miao.dev>"]
repository = "https://github.com/George-Miao/clashctl"
license = "MIT"
edition = "2021"
keywords = ["clash", "cli"]
categories = ["command-line-utilities"]
default-run = "clashctl"

[features]
default = []

interactive = [
  "clap",
  "clap_generate",
  "strum",
  "home",
  "ron",
]

cli = [
  "terminal_size",
  "interactive",
  "env_logger",
  "owo-colors",
  "requestty",
  "either",
]

ui = [
  "smart-default",
  "unicode-width",
  "interactive",
  "crossterm",
  "itertools",
  "bytesize",
  "rayon",
  "tui",
]

[profile.release]
lto = true
strip = true
panic = "abort"
opt-level = "z"
codegen-units = 1

[[bin]]
name = "clashctl_cli"
path = "src/bin/cli.rs"
required-features = ["cli"]

[[bin]]
name = "clashctl_ui"
path = "src/bin/ui.rs"
required-features = ["ui"]

[[bin]]
name = "clashctl"
path = "src/bin/cli_ui.rs"
required-features = ["cli", "ui"]

[dependencies]
serde_json  = "~1.0"
thiserror   = "~1.0"
urlencoding = "~2.1"
log         = { version = "~0.4", features = ["std"] }
url         = { version = "~2.2", features = ["serde"] }
serde       = { version = "~1.0", features = ["derive"] }
chrono      = { version = "~0.4", features = ["serde"] }
semver      = { version = "~1.0", features = ["serde"] }
ureq        = { version = "~2.3", default-features = false }

# Dependencies required by both CLI and UI
clap          = { version = "~3.0.0-beta.5", optional = true }
clap_generate = { version = "~3.0.0-beta.5", optional = true }
strum         = { version = "~0.22.0", features = ["derive"], optional = true }
home          = { version = "~0.5", optional = true }
ron           = { version = "~0.7", optional = true }

# Dependencies required by CLI
terminal_size = { version = "~0.1", optional = true }
owo-colors    = { version = "~3.0", optional = true }
env_logger    = { version = "~0.9", optional = true }
crossterm     = { version = "~0.22.1", optional = true }
requestty     = { version = "~0.1", optional = true }
either        = { version = "~1.6.1", optional = true }

# Dependencies required by UI
tui           = { version = "~0.16.0", optional = true, default-features = false, features = ['crossterm'] }
bytesize      = { version = "~1.1.0", optional = true }
unicode-width = { version = "~0.1.9", optional = true }
itertools     = { version = "~0.10.1", optional = true }
smart-default = { version = "~0.6.0", optional = true }
rayon         = { version = "~1.5.1", optional = true }

[dev-dependencies]
rand = { version = "0.8.4", features = ["small_rng"] }
simple_logger = "1.13.0"