Files
FTC-Project-Gen/windows/generate-readme.bat
2026-01-21 08:00:25 -06:00

132 lines
3.5 KiB
Batchfile

@echo off
REM Generate project README.md
setlocal
set "PROJECT_DIR=%~1"
set "PROJECT_NAME=%~2"
(
echo # %PROJECT_NAME%
echo.
echo FTC robot project generated by FTC Project Generator.
echo.
echo ## Quick Start
echo.
echo ```batch
echo REM Run tests
echo gradlew test
echo.
echo REM Watch tests ^(auto-rerun^)
echo gradlew test --continuous
echo.
echo REM Build and check
echo build.bat
echo.
echo REM Deploy to robot
echo deploy-to-robot.bat
echo ```
echo.
echo ## Project Structure
echo.
echo ```
echo %PROJECT_NAME%\
echo +-- src\main\java\robot\
echo ^| +-- subsystems\ Your robot logic ^(tested on PC^)
echo ^| +-- hardware\ FTC hardware implementations
echo ^| +-- opmodes\ FTC OpModes for Control Hub
echo +-- src\test\java\robot\ Unit tests ^(run without robot^)
echo ```
echo.
echo ## Development Workflow
echo.
echo 1. **Write code** in `src/main/java/robot/`
echo 2. **Write tests** in `src/test/java/robot/`
echo 3. **Run tests** with `gradlew test --continuous`
echo 4. **Tests pass** → You're good!
echo.
echo ## Deployment to Robot
echo.
echo When ready to test on actual hardware:
echo.
echo 1. **Uncomment FTC imports** in:
echo - `src\main\java\robot\hardware\MecanumDrive.java`
echo - `src\main\java\robot\opmodes\TeleOp.java`
echo.
echo 2. **Run deployment script:**
echo ```batch
echo deploy-to-robot.bat
echo ```
echo.
echo The script will:
echo - Deploy your code to SDK TeamCode
echo - Build APK
echo - Install to Control Hub ^(via USB or WiFi^)
echo.
echo ### Connection Methods
echo.
echo - **USB**: Just plug in and run ^(recommended^)
echo - **WiFi**: Connect to 'FIRST-xxxx-RC' network ^(IP: 192.168.43.1^)
echo - **Custom**: `deploy-to-robot.bat -i 192.168.1.x`
echo.
echo ## Adding New Subsystems
echo.
echo Follow the pattern:
echo.
echo 1. **Create subsystem** with inner Hardware interface:
echo ```java
echo public class MySubsystem {
echo public interface Hardware {
echo void doThing^(^);
echo }
echo }
echo ```
echo.
echo 2. **Create test** with inline mock:
echo ```java
echo class MySubsystemTest {
echo static class MockHardware implements MySubsystem.Hardware {
echo boolean didThing = false;
echo public void doThing^(^) { didThing = true; }
echo }
echo }
echo ```
echo.
echo 3. **Create hardware impl** for robot ^(keep FTC imports commented during dev^)
echo.
echo ## Tips
echo.
echo - Keep FTC imports commented during development
echo - Write tests for everything - they run instantly on PC
echo - Use `gradlew test --continuous` for fast iteration
echo - Multiple projects can share the same FTC SDK
echo.
echo ## Commands
echo.
echo ```batch
echo REM Development ^(on PC^)
echo gradlew test Run all tests
echo gradlew test --continuous Watch mode
echo.
echo REM Before deployment
echo build.bat Check for compile errors
echo build.bat --clean Clean build
echo.
echo REM Deploy to robot
echo deploy-to-robot.bat Full deployment
echo deploy-to-robot.bat --help Show options
echo.
echo REM Other
echo gradlew clean Clean build artifacts
echo gradlew tasks List available tasks
echo ```
echo.
echo ## Generated by FTC Project Generator
echo.
echo This project structure separates your robot code from the FTC SDK,
echo making it easy to test on PC and deploy when ready.
echo.
echo For more information, see the FTC Project Generator documentation.
) > "%PROJECT_DIR%\README.md"
endlocal
exit /b 0