| @echo off |
| SETLOCAL EnableDelayedExpansion |
| |
| REM we want jruby-complete to take care of all things ruby |
| SET GEM_HOME= |
| SET GEM_PATH= |
| |
| # This code supports both: |
| # ./go "namespace:task[--arg1,--arg2]" --rake-flag |
| # ./go namespace:task --arg1 --arg2 -- --rake-flag |
| |
| REM The first argument is always the Rake task name |
| SET task=%1 |
| |
| REM Check for arguments |
| IF "%task%"=="" ( |
| echo No task specified |
| exit /b 1 |
| ) |
| |
| REM Shift the task off |
| SHIFT |
| |
| REM Leave task alone if already passing in arguments the normal way |
| ECHO %task% | FINDSTR /C:"[" >NUL |
| IF %ERRORLEVEL% EQU 0 ( |
| GOTO execute_with_args |
| ) |
| |
| REM Initialize variables for task arguments and rake flags |
| SET task_args= |
| SET rake_flags= |
| SET separator_found=false |
| |
| REM Process arguments until we find -- |
| :process_args |
| IF "%1"=="" GOTO done_args |
| |
| IF "%1"=="--" ( |
| SET separator_found=true |
| SHIFT |
| GOTO collect_rake_flags |
| ) |
| |
| REM Add to task arguments |
| IF "!task_args!"=="" ( |
| SET task_args=%1 |
| ) ELSE ( |
| SET task_args=!task_args!,%1 |
| ) |
| SHIFT |
| GOTO process_args |
| |
| REM Collect remaining arguments as rake flags |
| :collect_rake_flags |
| IF "%1"=="" GOTO done_args |
| IF "!rake_flags!"=="" ( |
| SET rake_flags=%1 |
| ) ELSE ( |
| SET rake_flags=!rake_flags! %1 |
| ) |
| SHIFT |
| GOTO collect_rake_flags |
| |
| :done_args |
| REM If we have task args, format them as task[arg1,arg2,...] |
| IF NOT "!task_args!"=="" ( |
| SET task=%task%[!task_args!] |
| ECHO Executing rake task: %task% |
| ) |
| |
| :execute |
| REM Execute rake with the task and flags |
| java %JAVA_OPTS% -jar third_party\jruby\jruby-complete.jar -X-C -S rake %task% %rake_flags% |
| GOTO :EOF |
| |
| :execute_with_args |
| REM Task already has arguments in brackets, pass remaining args directly to rake |
| java %JAVA_OPTS% -jar third_party\jruby\jruby-complete.jar -X-C -S rake %task% %* |