Files
tty7/crates/tty7-cli/Cargo.toml

68 lines
2.4 KiB
TOML

# The thin console CLI: the `tty7` on the user's PATH.
# A control/pane-protocol client of tty7-server — the GUI is never required.
# Kept apart from the GUI binary on purpose (subsystem, upgrade file locks,
# millisecond cold start).
[package]
name = "tty7-cli"
version.workspace = true
edition.workspace = true
description = "tty7's command line: a thin client for the tty7 server — workspaces, tabs, panes, agents, no GUI required"
repository = "https://github.com/l0ng-ai/tty7"
license = "Apache-2.0"
publish = false
[[bin]]
name = "tty7"
path = "src/main.rs"
[dependencies]
# Protocol types only (ControlRequest/ReplyOk, the machine tree, PaneProcs).
# Default features: no gssapi, no remote-install — the CLI is a client of a
# server that already exists, it never links krb5 or an HTTP fetcher.
tty7-core = { path = "../tty7-core" }
anyhow.workspace = true
serde_json.workspace = true
# The command grammar. Not in [workspace.dependencies] because this is its only
# user, same as the GUI package's own single-user pins (regex, memchr, …).
clap = { version = "4", features = ["derive"] }
# Column alignment in the tables. Byte length is not display width: a CJK
# workspace name or cwd is two columns per char, and padding by len() puts
# every column after it out of line. Already in the tree via alacritty.
unicode-width = "0.2"
# The VT parser behind `capture --plain`. A pane's replay is a byte stream, and
# recovering the text from it is a terminal's job, not a regex's: only the grid
# knows that a break at column 120 was a wrap rather than a newline, that a CR
# meant "overwrite this line", or which cell a wide char and its spacer share.
# The same crate the GUI renders with, at the same rev, so the two agree about
# what a pane says.
alacritty_terminal.workspace = true
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[dev-dependencies]
tempfile = "3"
# The e2e harness puts its throwaway daemon in a Job Object wired to
# KILL_ON_JOB_CLOSE, so a hard-killed test run cannot leak servers.
[target.'cfg(windows)'.dev-dependencies]
windows-sys = { version = "0.59", features = [
"Win32_Foundation",
"Win32_Security",
"Win32_System_Console",
"Win32_System_JobObjects",
] }
# The end-to-end suite drives the compiled tty7.exe against a real isolated
# server; its own main doubles as that server process, so no libtest harness.
[[test]]
name = "cli_e2e"
harness = false
[lints]
workspace = true