feat: Weevil v1.0.0-beta1 - FTC Project Generator
Cross-platform tool for generating clean, testable FTC robot projects without editing the SDK installation. Features: - Standalone project generation with proper separation from SDK - Per-project SDK configuration via .weevil.toml - Local unit testing support (no robot required) - Cross-platform build/deploy scripts (Linux/macOS/Windows) - Project upgrade system preserving user code - Configuration management commands - Comprehensive test suite (11 passing tests) - Zero-warning builds Architecture: - Pure Rust implementation with embedded Gradle wrapper - Projects use deployToSDK task to copy code to FTC SDK TeamCode - Git-ready projects with automatic initialization - USB and WiFi deployment with auto-detection Commands: - weevil new <name> - Create new project - weevil upgrade <path> - Update project infrastructure - weevil config <path> - View/modify project configuration - weevil sdk status/install/update - Manage SDKs Addresses the core problem: FTC's SDK structure forces students to edit framework internals instead of separating concerns like industry standard practices. Weevil enables proper software engineering workflows for robotics education.
This commit is contained in:
78
Cargo.toml
Normal file
78
Cargo.toml
Normal file
@@ -0,0 +1,78 @@
|
||||
[package]
|
||||
name = "weevil"
|
||||
version = "1.0.0"
|
||||
edition = "2021"
|
||||
authors = ["Eric Ratliff <eric@intrepidfusion.com>"]
|
||||
description = "FTC robotics project generator - bores into complexity, emerges with clean code"
|
||||
license = "MIT"
|
||||
|
||||
[lib]
|
||||
name = "weevil"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "weevil"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
# CLI framework - beautiful help, subcommands, validation
|
||||
clap = { version = "4.5", features = ["derive", "cargo"] }
|
||||
|
||||
# Filesystem and paths
|
||||
walkdir = "2.5"
|
||||
tempfile = "3.13"
|
||||
dirs = "5.0"
|
||||
|
||||
# Templates
|
||||
tera = "1.20"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
toml = "0.8"
|
||||
|
||||
# Embedded resources
|
||||
include_dir = "0.7"
|
||||
|
||||
# Downloads
|
||||
reqwest = { version = "0.12", features = ["blocking", "stream"] }
|
||||
tokio = { version = "1.42", features = ["full"] }
|
||||
|
||||
# Progress bars
|
||||
indicatif = "0.17"
|
||||
|
||||
# Archive handling
|
||||
zip = "2.2"
|
||||
flate2 = "1.0"
|
||||
tar = "0.4"
|
||||
|
||||
# Error handling
|
||||
anyhow = "1.0"
|
||||
thiserror = "1.0"
|
||||
|
||||
# Git operations
|
||||
git2 = "0.19"
|
||||
|
||||
# Process execution
|
||||
which = "7.0"
|
||||
|
||||
# Colors
|
||||
colored = "2.1"
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = "3.13"
|
||||
assert_cmd = "2.0"
|
||||
predicates = "3.1"
|
||||
insta = "1.41"
|
||||
|
||||
[build-dependencies]
|
||||
ureq = { version = "2.10", features = ["json"] }
|
||||
zip = "2.2"
|
||||
|
||||
[profile.release]
|
||||
opt-level = 3
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
strip = true
|
||||
|
||||
[features]
|
||||
default = []
|
||||
embedded-gradle = [] # Embed gradle-wrapper.jar in binary (run download-gradle-wrapper.sh first)
|
||||
Reference in New Issue
Block a user