Vendor Wizard is a tool designed to simplify the management of vendor dependencies (vendordeps) in FRC (FIRST Robotics Competition) projects. It provides both a CLI script and a GUI tool to help teams easily update and maintain their project dependencies.
The files from this repository MUST be placed in a folder named tools
at the root of your robot project for the tool to function correctly.
- List all vendordeps and their status
- Update outdated vendordeps
- CLI script for automation and integration with build processes
- Gradle integration for automatic updates during builds
- Python 3.7+
- Bash (for the CLI script)
-
Clone this repository:
git clone https://github.com/WindingMotor/Vendor-Wizard.git
-
Create a new folder named
tools
at the root of your robot project if it doesn't already exist. -
Move all the cloned files into the
tools
folder in your robot project. -
Navigate to your the
tools
folder. -
Create a virtual environment:
python -m venv venv
-
Activate the virtual environment:
- On Windows:
venv\Scripts\activate
- On macOS and Linux:
source venv/bin/activate
- On Windows:
-
Install the required Python packages:
pip install -r tools/requirements.txt
The CLI tool is located in the tools
directory and is named vendor_wizard.sh
. To use it:
-
Make sure you're in your robot project's root directory.
-
Make the script executable:
chmod +x tools/vendor_wizard.sh
-
Run the script with the desired command:
./tools/vendor_wizard.sh list ./tools/vendor_wizard.sh update
To launch the GUI tool:
-
Ensure you're in the
tools
directory and your virtual environment is activated. -
Run the Python script:
python tools/vendor_wizard_gui.py
To integrate Vendor Wizard with your Gradle build process, add the following task to your build.gradle
file:
task updateVendordeps(type: Exec) {
workingDir "${rootDir}/tools"
commandLine './vendor_wizard.sh', 'update', '--gradle'
standardOutput = new ByteArrayOutputStream()
errorOutput = new ByteArrayOutputStream()
ignoreExitValue = true
doLast {
def output = standardOutput.toString()
def errorOutput = errorOutput.toString()
println output
println errorOutput
}
}
tasks.build.dependsOn updateVendordeps
This will automatically update your vendordeps when you run the Gradle build.
Contributions are welcome! Please feel free to submit a Pull Request.