1@echo off
2
3:: Copyright (C) 2014 The Android Open Source Project
4
5:: Licensed under the Apache License, Version 2.0 (the "License");
6:: you may not use this file except in compliance with the License.
7:: You may obtain a copy of the License at
8
9::     http://www.apache.org/licenses/LICENSE-2.0
10
11:: Unless required by applicable law or agreed to in writing, software
12:: distributed under the License is distributed on an "AS IS" BASIS,
13:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14:: See the License for the specific language governing permissions and
15:: limitations under the License.
16
17:: A helper script that launches TradeFederation from the current build
18:: environment.
19
20setlocal EnableDelayedExpansion
21call:checkCommand adb
22call:checkCommand java
23
24:: check java version
25
26%JAVA% -version 2>&1 | findstr /R "version\ \"1*\.*[89].*\"$" || (
27    echo "Wrong java version. 1.8 or 9 is required."
28    exit /B
29)
30
31:: check debug flag and set up remote debugging
32if not "%TF_DEBUG%"=="" (
33    if "%TF_DEBUG_PORT%" == "" (
34        set TF_DEBUG_PORT=10088
35    )
36    set RDBG_FLAG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=!TF_DEBUG_PORT!
37)
38
39:: first try to find TF jars in same dir as this script
40set CUR_DIR=%CD%
41
42if exist "%CUR_DIR%\tradefed.jar" (
43    set tf_path="%CUR_DIR%\*"
44) else (
45    if not "%ANDROID_HOST_OUT%" == "" (
46        if exist "%ANDROID_HOST_OUT%\tradefed\tradefed.jar" (
47            set tf_path="%ANDROID_HOST_OUT%\tradefed\*"
48        )
49    )
50)
51
52if "%tf_path%" == "" (
53    echo "ERROR: Could not find tradefed jar files"
54    exit /B
55)
56
57:: set any host specific options
58:: file format for file at $TRADEFED_OPTS_FILE is one line per host with the following format:
59:: <hostname>=<options>
60:: for example:
61:: hostname.domain.com=-Djava.io.tmpdir=/location/on/disk -Danother=false ...
62:: hostname2.domain.com=-Djava.io.tmpdir=/different/location -Danother=true ...
63if exist "%TRADEFED_OPTS_FILE%" (
64    call:commandResult "hostname" HOST_NAME
65    call:commandResult "findstr /i /b "%HOST_NAME%" "%TRADEFED_OPTS_FILE%"" TRADEFED_OPTS
66:: delete the hostname part
67    set TRADEFED_OPTS=!TRADEFED_OPTS:%HOST_NAME%=!
68:: delete the first =
69    set TRADEFED_OPTS=!TRADEFED_OPTS:~1!
70)
71
72java %RDBG_FLAG% -XX:+HeapDumpOnOutOfMemoryError ^
73-XX:-OmitStackTraceInFastThrow %TRADEFED_OPTS% -cp %tf_path% com.android.tradefed.command.Console %*
74
75endlocal
76::end of file
77goto:eof
78
79:: check command exist or not
80:: if command not exist, exit
81:checkCommand
82for /f "delims=" %%i in ('where %~1') do (
83    if %%i == "" (
84        echo %~1 not exist
85        exit /B
86    )
87    goto:eof
88)
89goto:eof
90
91:: get the command result
92:: usage: call:commandResult "command" result
93:commandResult
94for /f "delims=" %%i in ('%~1') do (
95    set %~2=%%i
96    goto:eof
97)
98goto:eof
99