#project #vex #upload

bin+lib cargo-v5

A cargo subcommand for managing V5 Brain Rust projects

15 releases (4 breaking)

0.10.3 Feb 22, 2025
0.10.1 Jan 31, 2025
0.9.1 Dec 19, 2024
0.8.2 Nov 3, 2024
0.6.3 Jul 17, 2024

#272 in Cargo plugins

MIT license

115KB
2.5K SLoC

cargo-v5

Build, upload, run, and simulate Rust projects written for VEX!

cargo-v5 is a command line tool that simplifies working with VEX projects written in Rust (with a focus on the vexide runtime).

Installation

cargo-v5 comes with 2 optional features that enable extra functionality:

  • field-control: Adds a field control tui accesible through cargo v5 field-control or cargo v5 fc.
  • fetch-template: With this feature enabled, cargo v5 new will attempt to fetch the most recent upstream version of vexide-template instead of a built-in one. The command will always fall back to the built-in template.

If you wish to enable both, you can simply enable the full feature.

All Features

cargo install cargo-v5 --features "full"

Specific Feature

cargo install cargo-v5 --features "field-control"

No Features

cargo install cargo-v5

Usage

Build a vexide project for the V5's platform target:

cargo v5 build --release

Upload a vexide project over USB (you may be prompted to provide a slot number):

cargo v5 upload

View serial output from the current user program:

cargo v5 terminal

Configuration

Upload behavior can be configured through either your Cargo.toml file or by providing arguments to cargo-v5.

cargo-v5 will attempt to find Cargo.toml files with the following structure for providing defaults to some upload options.

[package.metadata.v5]
slot = 1
icon = "cool-x"
compress = true

Properties

  • package.metadata.v5.slot (integer): Set the default program slot to upload to.
  • package.metadata.v5.icon (string) (default "question-mark"): Set the default program icon. (see cargo v5 upload -h for a list of icon strings)
  • package.metadata.v5.compress (boolean) (default true): Configure if program binaries should be gzipped before uploading. It is strongly recommended to keep this at default (true), as disabling compression will greatly increase upload times.

cargo-v5 will also use your project's package.name and package.description fields for program name/description if nothing is explicitly provided.

For a full list of arguments, check

cargo v5 help

Dependencies

~20–36MB
~581K SLoC