feat: Initialize Rust project with dependencies and tooling
Set up the GitLab Inbox (gi) CLI tool as a Rust 2024 edition project. Dependencies organized by purpose: - Database: rusqlite (bundled SQLite), sqlite-vec for vector search - Serialization: serde/serde_json for GitLab API responses - CLI: clap for argument parsing, dialoguer for interactive prompts, comfy-table for formatted output, indicatif for progress bars - HTTP: reqwest with tokio async runtime for GitLab API calls - Async: async-stream and futures for paginated API iteration - Utilities: thiserror for error types, chrono for timestamps, flate2 for payload compression, sha2 for content hashing - Logging: tracing with env-filter for structured debug output Release profile optimized for small binary size (LTO, strip symbols). Project structure follows standard Rust conventions with src/lib.rs exposing modules and src/main.rs as CLI entry point. Added .gitignore for Rust/Cargo artifacts and local database files. Added AGENTS.md with TDD workflow guidance and beads issue tracking integration instructions for AI-assisted development. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
60
Cargo.toml
Normal file
60
Cargo.toml
Normal file
@@ -0,0 +1,60 @@
|
||||
[package]
|
||||
name = "gi"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
description = "GitLab Knowledge Engine - semantic search for GitLab issues, MRs, and discussions"
|
||||
authors = ["Taylor Eernisse"]
|
||||
license = "MIT"
|
||||
|
||||
[[bin]]
|
||||
name = "gi"
|
||||
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"] }
|
||||
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"
|
||||
sha2 = "0.10"
|
||||
flate2 = "1"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
uuid = { version = "1", features = ["v4"] }
|
||||
|
||||
# Logging
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
tracing-indicatif = "0.3"
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3"
|
||||
wiremock = "0.6"
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
strip = true
|
||||
Reference in New Issue
Block a user