CLI help improvements (cli/mod.rs): - Add descriptive help text to all global flags (-c, --robot, -J, etc.) - Add descriptions to all subcommands (Issues, Mrs, Sync, etc.) - Add --no-quiet flag for explicit quiet override - Shell completions now shows installation instructions for each shell - Optional subcommand: running bare 'lore' shows help in terminal mode, robot-docs in robot mode Structured clap error handling (main.rs): - Early robot mode detection before parsing (env + args) - JSON error output for parse failures in robot mode - Semantic error codes: UNKNOWN_COMMAND, UNKNOWN_FLAG, MISSING_REQUIRED, INVALID_VALUE, ARGUMENT_CONFLICT, etc. - Fuzzy command suggestion using Jaro-Winkler similarity (>0.7 threshold) - Help/version requests handled normally (exit 0, not error) Robot-docs enhancements (main.rs): - Document deprecated command aliases (list issues -> issues, etc.) - Document clap error codes for programmatic error handling - Include completions command in manifest - Update flag documentation to show short forms (-n, -s, -p, etc.) Dependencies: - Add strsim 0.11 for Jaro-Winkler fuzzy matching Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
68 lines
1.3 KiB
TOML
68 lines
1.3 KiB
TOML
[package]
|
|
name = "lore"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "Gitlore - Local GitLab data management with semantic search"
|
|
authors = ["Taylor Eernisse"]
|
|
license = "MIT"
|
|
|
|
[[bin]]
|
|
name = "lore"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Database
|
|
rusqlite = { version = "0.38", features = ["bundled"] }
|
|
sqlite-vec = "0.1"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
clap_complete = "4"
|
|
dialoguer = "0.12"
|
|
console = "0.16"
|
|
indicatif = "0.18"
|
|
comfy-table = "7"
|
|
open = "5"
|
|
|
|
# HTTP
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] }
|
|
|
|
# Async streaming for pagination
|
|
async-stream = "0.3"
|
|
futures = { version = "0.3", default-features = false, features = ["alloc"] }
|
|
|
|
# Utilities
|
|
thiserror = "2"
|
|
dirs = "6"
|
|
url = "2"
|
|
urlencoding = "2"
|
|
rand = "0.8"
|
|
sha2 = "0.10"
|
|
flate2 = "1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
regex = "1"
|
|
strsim = "0.11"
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
|
|
tracing-appender = "0.2"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
wiremock = "0.6"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|