Index: sdk/bin/dartanalyzer.bat |
diff --git a/sdk/bin/dartanalyzer.bat b/sdk/bin/dartanalyzer.bat |
index 490512446376baf4782c3a1b40c4cbb8fee2095b..ba7989fdb5f3642600edca2f9991ad81231c9629 100644 |
--- a/sdk/bin/dartanalyzer.bat |
+++ b/sdk/bin/dartanalyzer.bat |
@@ -1,57 +1,44 @@ |
-@echo off |
-rem Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-rem for details. All rights reserved. Use of this source code is governed by a |
-rem BSD-style license that can be found in the LICENSE file. |
- |
-set SCRIPT_DIR=%~dp0 |
-if %SCRIPT_DIR:~-1%==\ set SCRIPT_DIR=%SCRIPT_DIR:~0,-1% |
- |
-for %%I in ("%SCRIPT_DIR%\..") do set "DART_ANALYZER_HOME=%%~fI" |
-if %DART_ANALYZER_HOME:~-1%==\ set DART_ANALYZER_HOME=%DART_ANALYZER_HOME:~0,-1% |
- |
-set FOUND_BATCH=0 |
-set FOUND_SDK=0 |
-for %%a in (%*) do ( |
- if [%%a] == [--batch] set FOUND_BATCH=1 |
- if [%%a] == [-b] set FOUND_BATCH=1 |
- if [%%a] == [--dart-sdk] set FOUND_SDK=1 |
-) |
- |
-setlocal EnableDelayedExpansion |
-set DART_SDK="" |
-if [%FOUND_SDK%] == [0] ( |
- if exist "%DART_ANALYZER_HOME%\lib\core\core.dart" ( |
- set DART_SDK=--dart-sdk "%DART_ANALYZER_HOME%" |
- ) else ( |
- for /f %%i in ('echo %DART_ANALYZER_HOME%') do set DART_SDK_HOME=%%~dpi\dart-sdk |
- if exist "!DART_SDK_HOME!" ( |
- set DART_SDK=--dart-sdk !DART_SDK_HOME! |
- ) else ( |
- for /f %%j in ('call echo !DART_SDK_HOME!') do set DART_SDK_HOME=%%~dpj\dart-sdk |
- if exist "!DART_SDK_HOME!" ( |
- set DART_SDK=--dart-sdk !DART_SDK_HOME! |
- ) else ( |
- echo Couldn't find Dart SDK. Specify with --dart-sdk cmdline argument |
- ) |
- ) |
- ) |
-) |
-endlocal & set DART_SDK=%DART_SDK% & set DART_SDK_HOME=%DART_SDK_HOME% |
- |
-if exist "%DART_SDK_HOME%\util\dartanalyzer\dartanalyzer.jar" ( |
- set DART_ANALYZER_LIBS=%DART_SDK_HOME%\util\dartanalyzer |
-) else if exist "%DART_ANALYZER_HOME%\util\dartanalyzer\dartanalyzer.jar" ( |
- set DART_ANALYZER_LIBS=%DART_ANALYZER_HOME%\util\dartanalyzer |
-) else ( |
- echo Configuration problem. Couldn't find dartanalyzer.jar. |
- exit /b 1 |
-) |
- |
-setlocal EnableDelayedExpansion |
-set EXTRA_JVMARGS=-Xss2M |
-if [%FOUND_BATCH%] == [1] ( |
- set EXTRA_JVMARGS=!EXTRA_JVMARGS! -client |
-) |
-endlocal & set "EXTRA_JVMARGS=%EXTRA_JVMARGS%" |
- |
-java %EXTRA_JVMARGS% %DART_JVMARGS% -ea -jar "%DART_ANALYZER_LIBS%\dartanalyzer.jar" %DART_SDK% %* |
+@echo off |
+REM Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+REM for details. All rights reserved. Use of this source code is governed by a |
+REM BSD-style license that can be found in the LICENSE file. |
+ |
+setlocal |
+rem Handle the case where dart-sdk/bin has been symlinked to. |
+set DIR_NAME_WITH_SLASH=%~dp0 |
+set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%% |
+call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR |
+rem Get rid of surrounding quotes. |
+for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi |
+ |
+set DART=%BIN_DIR%\dart |
+set SNAPSHOT=%BIN_DIR%\snapshots\dartanalyzer.dart.snapshot |
+ |
+"%DART%" "%SNAPSHOT%" %* |
+ |
+endlocal |
+ |
+exit /b %errorlevel% |
+ |
+rem Follow the symbolic links (junctions points) using `dir to determine the |
+rem canonical path. Output with a link looks something like this |
+rem |
+rem 01/03/2013 10:11 PM <JUNCTION> abc def |
+rem [c:\dart_bleeding\dart-repo.9\dart\build\ReleaseIA32\dart-sdk] |
+rem |
+rem So in the output of 'dir /a:l "targetdir"' we are looking for a filename |
+rem surrounded by right angle bracket and left square bracket. Once we get |
+rem the filename, which is name of the link, we recursively follow that. |
+:follow_links |
+setlocal |
+for %%i in (%1) do set result=%%~fi |
+set current= |
+for /f "usebackq tokens=2 delims=[]" %%i in (`dir /a:l "%~dp1" 2^>nul ^ |
+ ^| find "> %~n1 ["`) do ( |
+ set current=%%i |
+) |
+if not "%current%"=="" call :follow_links "%current%", result |
+endlocal & set %~2=%result% |
+goto :eof |
+ |
+:end |