OLD | NEW |
1 @echo off | 1 @echo off |
2 REM Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 2 REM Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
3 REM for details. All rights reserved. Use of this source code is governed by a | 3 REM for details. All rights reserved. Use of this source code is governed by a |
4 REM BSD-style license that can be found in the LICENSE file. | 4 REM BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 setlocal | 6 setlocal |
7 rem Handle the case where dart-sdk/bin has been symlinked to. | 7 rem Handle the case where dart-sdk/bin has been symlinked to. |
8 set DIR_NAME_WITH_SLASH=%~dp0 | 8 set DIR_NAME_WITH_SLASH=%~dp0 |
9 set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%% | 9 set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%% |
10 call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR | 10 call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR |
11 rem Get rid of surrounding quotes. | 11 rem Get rid of surrounding quotes. |
12 for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi | 12 for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi |
13 | 13 |
14 set DART=%BIN_DIR%\dart | 14 set DART=%BIN_DIR%\dart |
15 set SNAPSHOT=%BIN_DIR%\snapshots\dartfmt.dart.snapshot | 15 set SNAPSHOT=%BIN_DIR%\snapshots\dartfmt.dart.snapshot |
16 | 16 |
17 "%DART%" "%SNAPSHOT%" %* | 17 "%DART%" "%SNAPSHOT%" %* |
18 | 18 |
19 endlocal | 19 endlocal |
20 | 20 |
21 exit /b %errorlevel% | 21 exit /b %errorlevel% |
22 | 22 |
23 rem Follow the symbolic links (junctions points) using `dir to determine the | 23 rem Follow the symbolic links (junctions points) using `dir to determine the |
24 rem canonical path. Output with a link looks something like this | 24 rem canonical path. Output with a link looks something like this |
25 rem | 25 rem |
26 rem 01/03/2013 10:11 PM <JUNCTION> abc def | 26 rem 01/03/2013 10:11 PM <JUNCTION> abc def |
27 rem [c:\dart_bleeding\dart-repo.9\dart\build\ReleaseIA32\dart-sdk] | 27 rem [c:\dart_bleeding\dart-repo.9\dart\out\ReleaseIA32\dart-sdk] |
28 rem | 28 rem |
29 rem So in the output of 'dir /a:l "targetdir"' we are looking for a filename | 29 rem So in the output of 'dir /a:l "targetdir"' we are looking for a filename |
30 rem surrounded by right angle bracket and left square bracket. Once we get | 30 rem surrounded by right angle bracket and left square bracket. Once we get |
31 rem the filename, which is name of the link, we recursively follow that. | 31 rem the filename, which is name of the link, we recursively follow that. |
32 :follow_links | 32 :follow_links |
33 setlocal | 33 setlocal |
34 for %%i in (%1) do set result=%%~fi | 34 for %%i in (%1) do set result=%%~fi |
35 set current= | 35 set current= |
36 for /f "usebackq tokens=2 delims=[]" %%i in (`dir /a:l "%~dp1" 2^>nul ^ | 36 for /f "usebackq tokens=2 delims=[]" %%i in (`dir /a:l "%~dp1" 2^>nul ^ |
37 ^| find "> %~n1 ["`) do ( | 37 ^| find "> %~n1 ["`) do ( |
38 set current=%%i | 38 set current=%%i |
39 ) | 39 ) |
40 if not "%current%"=="" call :follow_links "%current%", result | 40 if not "%current%"=="" call :follow_links "%current%", result |
41 endlocal & set %~2=%result% | 41 endlocal & set %~2=%result% |
42 goto :eof | 42 goto :eof |
43 | 43 |
44 :end | 44 :end |
OLD | NEW |