From b1593a4f87b7e95918e6e7101bf9522d8e552d82 Mon Sep 17 00:00:00 2001 From: Eric Ratliff Date: Wed, 21 Jan 2026 08:58:23 -0600 Subject: [PATCH] Fixed more bugs --- ftc-new-project.bat | 134 ++++++++++++++++++++++++-- windows/create-gradle-wrapper.bat | 150 +++++++++++------------------- 2 files changed, 182 insertions(+), 102 deletions(-) diff --git a/ftc-new-project.bat b/ftc-new-project.bat index f91dc81..b43458e 100644 --- a/ftc-new-project.bat +++ b/ftc-new-project.bat @@ -47,10 +47,120 @@ if "%PROJECT_NAME%"=="" ( exit /b 1 ) +echo ============================================ +echo FTC Project Generator +echo ============================================ +echo. +echo Checking prerequisites... +echo. + +REM Check for git +where git >nul 2>&1 +if errorlevel 1 ( + echo ================================================================ + echo ERROR: Git not found + echo ================================================================ + echo. + echo Git is required to clone the FTC SDK and manage your project. + echo. + echo TO INSTALL: + echo Download: https://git-scm.com/download/win + echo Run installer with default options + echo Restart command prompt after installation + echo. + echo ================================================================ + exit /b 1 +) +echo + Git found + +REM Check for Java +where java >nul 2>&1 +if errorlevel 1 ( + echo ================================================================ + echo ERROR: Java not found + echo ================================================================ + echo. + echo Java 11+ is required to build FTC projects. + echo. + echo TO INSTALL: + echo Download: https://adoptium.net/temurin/releases/ + echo Choose: Java 17 LTS ^(recommended^) or Java 11 LTS + echo Run installer with default options + echo Restart command prompt after installation + echo. + echo ================================================================ + exit /b 1 +) + +REM Check Java version +for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do set JAVA_VERSION=%%g +set JAVA_VERSION=%JAVA_VERSION:"=% +for /f "tokens=1,2 delims=." %%a in ("%JAVA_VERSION%") do ( + set JAVA_MAJOR=%%a + if "%%a"=="1" set JAVA_MAJOR=%%b +) +if %JAVA_MAJOR% LSS 11 ( + echo ================================================================ + echo ERROR: Java version too old + echo ================================================================ + echo. + echo Current: Java %JAVA_VERSION% + echo Required: Java 11 or later + echo. + echo TO UPGRADE: + echo Download: https://adoptium.net/temurin/releases/ + echo Choose: Java 17 LTS ^(recommended^) + echo. + echo ================================================================ + exit /b 1 +) +echo + Java %JAVA_VERSION% found + +REM Check for Gradle +where gradle >nul 2>&1 +if errorlevel 1 ( + echo ================================================================ + echo ERROR: Gradle not found + echo ================================================================ + echo. + echo Gradle is required to generate the wrapper for your project. + echo. + echo TO INSTALL ^(choose one method^): + echo. + echo Option 1 - Chocolatey ^(recommended^): + echo choco install gradle + echo. + echo Option 2 - Scoop: + echo scoop install gradle + echo. + echo Option 3 - Manual install: + echo 1. Download: https://gradle.org/releases/ + echo 2. Extract to C:\Gradle + echo 3. Add C:\Gradle\bin to PATH + echo. + echo Option 4 - SDKMAN ^(if you use it^): + echo sdk install gradle + echo. + echo After installation: + echo 1. Restart command prompt + echo 2. Run: gradle --version + echo 3. Re-run this script + echo. + echo ================================================================ + exit /b 1 +) + +for /f "tokens=3" %%v in ('gradle --version 2^>^&1 ^| findstr /C:"Gradle"') do set GRADLE_VERSION=%%v +echo + Gradle %GRADLE_VERSION% found + +echo. +echo All prerequisites satisfied! +echo. + set "PROJECT_DIR=%CD%\%PROJECT_NAME%" echo ============================================ -echo FTC Project Generator +echo Project Configuration echo ============================================ echo Project: %PROJECT_NAME% echo SDK Dir: %FTC_SDK_DIR% @@ -79,7 +189,7 @@ if exist "%FTC_SDK_DIR%" ( git fetch --tags git checkout "%FTC_VERSION%" if errorlevel 1 ( - echo Error: Failed to checkout version %FTC_VERSION% + echo ERROR: Failed to checkout version %FTC_VERSION% exit /b 1 ) echo + Updated to %FTC_VERSION% @@ -93,19 +203,23 @@ if exist "%FTC_SDK_DIR%" ( echo This will take a minute ^(SDK is about 200MB^)... git clone --depth 1 --branch "%FTC_VERSION%" https://github.com/FIRST-Tech-Challenge/FtcRobotController.git "%FTC_SDK_DIR%" if errorlevel 1 ( - echo Error: Failed to clone FTC SDK - echo Check your internet connection or try a different version tag + echo ERROR: Failed to clone FTC SDK + echo Check your internet connection exit /b 1 ) echo + Cloned FTC SDK %FTC_VERSION% to %FTC_SDK_DIR% ) +REM Return to starting directory +cd /d "%~dp0" + REM Step 2: Create project structure echo. echo ^>^>^> Creating project: %PROJECT_NAME% if exist "%PROJECT_DIR%" ( - echo Error: Project directory already exists: %PROJECT_DIR% + echo ERROR: Project directory already exists: %PROJECT_DIR% + echo Choose a different name or remove the existing directory exit /b 1 ) @@ -124,9 +238,17 @@ echo Generating build configuration... call "%WINDOWS_DIR%\generate-build-gradle.bat" "%PROJECT_DIR%" call "%WINDOWS_DIR%\generate-settings-gradle.bat" "%PROJECT_DIR%" "%FTC_SDK_DIR%" -REM Step 4: Create Gradle wrapper files +REM Step 4: Create Gradle wrapper using installed Gradle echo Setting up Gradle wrapper... call "%WINDOWS_DIR%\create-gradle-wrapper.bat" "%PROJECT_DIR%" +if errorlevel 1 ( + echo. + echo ERROR: Failed to setup Gradle wrapper + echo Cleaning up partial project... + cd .. + rmdir /s /q "%PROJECT_DIR%" 2>nul + exit /b 1 +) REM Step 5: Generate source files echo Generating example source files... diff --git a/windows/create-gradle-wrapper.bat b/windows/create-gradle-wrapper.bat index c341635..400ac4c 100644 --- a/windows/create-gradle-wrapper.bat +++ b/windows/create-gradle-wrapper.bat @@ -1,8 +1,9 @@ @echo off REM Create Gradle wrapper files -setlocal +setlocal enabledelayedexpansion set "PROJECT_DIR=%~1" +set "GRADLE_VERSION=8.9" REM Create gradle wrapper directory mkdir "%PROJECT_DIR%\gradle\wrapper" 2>nul @@ -11,107 +12,64 @@ REM Create gradle-wrapper.properties ( echo distributionBase=GRADLE_USER_HOME echo distributionPath=wrapper/dists -echo distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +echo distributionUrl=https\://services.gradle.org/distributions/gradle-%GRADLE_VERSION%-bin.zip echo networkTimeout=10000 +echo validateDistributionUrl=true echo zipStoreBase=GRADLE_USER_HOME echo zipStorePath=wrapper/dists ) > "%PROJECT_DIR%\gradle\wrapper\gradle-wrapper.properties" -REM Create gradlew.bat -( -echo @rem -echo @rem Copyright 2015 the original author or authors. -echo @rem -echo @rem Licensed under the Apache License, Version 2.0 ^(the "License"^); -echo @rem you may not use this file except in compliance with the License. -echo @rem You may obtain a copy of the License at -echo @rem -echo @rem https://www.apache.org/licenses/LICENSE-2.0 -echo @rem -echo @rem Unless required by applicable law or agreed to in writing, software -echo @rem distributed under the License is distributed on an "AS IS" BASIS, -echo @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -echo @rem See the License for the specific language governing permissions and -echo @rem limitations under the License. -echo @rem -echo. -echo @if "%%DEBUG%%"=="" @echo off -echo @rem ########################################################################## -echo @rem -echo @rem Gradle startup script for Windows -echo @rem -echo @rem ########################################################################## -echo. -echo @rem Set local scope for the variables with windows NT shell -echo if "%%OS%%"=="Windows_NT" setlocal -echo. -echo set DIRNAME=%%~dp0 -echo if "%%DIRNAME%%"=="" set DIRNAME=. -echo set APP_BASE_NAME=%%~n0 -echo set APP_HOME=%%DIRNAME%% -echo. -echo @rem Resolve any "." and ".." in APP_HOME to make it shorter. -echo for %%%%i in ^("%%APP_HOME%%"^) do set APP_HOME=%%%%~fi -echo. -echo @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -echo set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" -echo. -echo @rem Find java.exe -echo if defined JAVA_HOME goto findJavaFromJavaHome -echo. -echo set JAVA_EXE=java.exe -echo %%JAVA_EXE%% -version ^>NUL 2^>^&1 -echo if "%%ERRORLEVEL%%"=="0" goto execute -echo. -echo echo. -echo echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo echo. -echo echo Please set the JAVA_HOME variable in your environment to match the -echo echo location of your Java installation. -echo. -echo goto fail -echo. -echo :findJavaFromJavaHome -echo set JAVA_HOME=%%JAVA_HOME:"=%% -echo set JAVA_EXE=%%JAVA_HOME%%/bin/java.exe -echo. -echo if exist "%%JAVA_EXE%%" goto execute -echo. -echo echo. -echo echo ERROR: JAVA_HOME is set to an invalid directory: %%JAVA_HOME%% -echo echo. -echo echo Please set the JAVA_HOME variable in your environment to match the -echo echo location of your Java installation. -echo. -echo goto fail -echo. -echo :execute -echo @rem Setup the command line -echo. -echo set CLASSPATH=%%APP_HOME%%\gradle\wrapper\gradle-wrapper.jar -echo. -echo @rem Execute Gradle -echo "%%JAVA_EXE%%" %%DEFAULT_JVM_OPTS%% %%JAVA_OPTS%% %%GRADLE_OPTS%% "-Dorg.gradle.appname=%%APP_BASE_NAME%%" -classpath "%%CLASSPATH%%" org.gradle.wrapper.GradleWrapperMain %%* -echo. -echo :end -echo @rem End local scope for the variables with windows NT shell -echo if "%%ERRORLEVEL%%"=="0" goto mainEnd -echo. -echo :fail -echo rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -echo rem the _cmd.exe /c_ return code! -echo if not "" == "%%GRADLE_EXIT_CONSOLE%%" exit 1 -echo exit /b 1 -echo. -echo :mainEnd -echo if "%%OS%%"=="Windows_NT" endlocal -echo. -echo :omega -) > "%PROJECT_DIR%\gradlew.bat" +REM Check if gradle is installed globally +where gradle >nul 2>&1 +if errorlevel 1 ( + echo. + echo ================================================================ + echo ERROR: Gradle not found + echo ================================================================ + echo. + echo The Gradle wrapper requires either: + echo 1. Gradle installed globally to generate wrapper files, OR + echo 2. Pre-bundled gradle-wrapper.jar file + echo. + echo TO FIX - Install Gradle: + echo Windows ^(Chocolatey^): choco install gradle + echo Windows ^(Scoop^): scoop install gradle + echo Manual download: https://gradle.org/install/ + echo. + echo After installing Gradle: + echo 1. Restart your command prompt + echo 2. Run: gradle --version ^(to verify^) + echo 3. Re-run the project generator + echo. + echo ================================================================ + echo. + exit /b 1 +) -REM Create minimal gradle-wrapper.jar placeholder message -echo Note: Download gradle-wrapper.jar from https://services.gradle.org/distributions/ > "%PROJECT_DIR%\gradle\wrapper\gradle-wrapper.jar.txt" -echo Or run: gradlew wrapper to generate the complete wrapper >> "%PROJECT_DIR%\gradle\wrapper\gradle-wrapper.jar.txt" +REM Verify gradle version +for /f "tokens=3" %%v in ('gradle --version 2^>^&1 ^| findstr /C:"Gradle"') do set INSTALLED_GRADLE=%%v +echo Found Gradle %INSTALLED_GRADLE% + +REM Now use gradle to generate the wrapper +echo Generating wrapper using installed Gradle... +cd /d "%PROJECT_DIR%" +gradle wrapper --gradle-version %GRADLE_VERSION% --no-daemon >nul 2>&1 + +if not exist "%PROJECT_DIR%\gradle\wrapper\gradle-wrapper.jar" ( + echo. + echo ERROR: Gradle wrapper generation failed + echo. + echo The 'gradle wrapper' command did not create gradle-wrapper.jar + echo This should not happen with a working Gradle installation. + echo. + echo Try manually: + echo cd %PROJECT_DIR% + echo gradle wrapper --gradle-version %GRADLE_VERSION% + echo. + exit /b 1 +) + +echo + Gradle wrapper generated successfully endlocal exit /b 0 \ No newline at end of file