Posted this to the forums, but it butchered the scripts I attached.
Using gradlew is nice for a lot of reasons, but it somewhat forces you to run 
things from the command line at the top project level only or use ../../gradlew 
depending upon where in the subproject tree one is. 

How about if there 
were scripts called gradlew and gradlew.bat that shipped with gradle in the bin 
directory (so they'd be picked up along the path if a gradle instance were 
added 
to someone's path) and they simply attempt to walk up the current directory 
structure looking for a gradlew/gradlew.bat file. 

Below are some scripts 
that do just that - whether they are well written is a separate issue ;-) Not 
sure if the windows script works in XP, but it definitely works in Vista and 
above. 

gradlew
===========================================================
#!/bin/bash

FOUND=0
CURR_PATH="$PWD"
REAL_GRADLEW="$CURR_PATH/gradlew"

if [ -x "$REAL_GRADLEW" ]
then
  FOUND=1
else
  while [ "$CURR_PATH" != "/" ]
  do
    CURR_PATH=$(dirname "$CURR_PATH")
    REAL_GRADLEW="$CURR_PATH/gradlew"

    if [ -x "$REAL_GRADLEW" ]
    then
      FOUND=1
      break
    fi
  done
fi

if [ $FOUND -eq 1 ]
then
  $REAL_GRADLEW "$@"
else
  echo "Unable to find gradlew file upwards in filesystem"
fi

exit 0


gradlew.bat
===========================================================
@echo off
setlocal enabledelayedexpansion
set CURR_PATH=%cd%

set REAL_GRADLEW=%CURR_PATH%\gradlew.bat

if exist %REAL_GRADLEW% (
  goto :found
)

:while1
  call :getdir "%CURR_PATH%"

  set REAL_GRADLEW=!CURR_PATH!\gradlew.bat

  if exist !REAL_GRADLEW! (
    goto :found
  )

  if "%CURR_PATH:~-1%" == ":" (
    goto :notfound
  )
goto :while1

:notfound
echo Unable to find gradlew.bat file upwards in filesystem
goto :goodbye

:found
call !REAL_GRADLEW! %*

:goodbye
endlocal
goto :EOF

:getdir
set "CURR_PATH=%~dp1"
set "CURR_PATH=%CURR_PATH:~0,-1%"



-Spencer

Reply via email to