mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e -o pipefail
|
|
|
|
tunnelFileName="BrowserStackLocal-linux-x64.zip"
|
|
tunnelUrl="https://www.browserstack.com/browserstack-local/${tunnelFileName}"
|
|
|
|
tunnelTmpDir="/tmp/material-browserstack"
|
|
tunnelLogFile="${tunnelTmpDir}/browserstack-local.log"
|
|
tunnelReadyFile="${tunnelTmpDir}/readyfile"
|
|
tunnelErrorFile="${tunnelTmpDir}/errorfile"
|
|
|
|
# Cleanup and create the folder structure for the tunnel connector.
|
|
rm -rf ${tunnelTmpDir} ${tunnelReadyFile} ${tunnelErrorFile}
|
|
mkdir -p ${tunnelTmpDir}
|
|
touch ${tunnelLogFile}
|
|
|
|
# Go into temporary tunnel directory.
|
|
cd ${tunnelTmpDir}
|
|
|
|
# Download the browserstack local binaries.
|
|
curl ${tunnelUrl} -o ${tunnelFileName} 2> /dev/null 1> /dev/null
|
|
|
|
# Extract the browserstack local binaries from the tarball.
|
|
mkdir -p browserstack-tunnel
|
|
unzip -q ${tunnelFileName} -d browserstack-tunnel
|
|
|
|
# Cleanup the downloaded zip archive.
|
|
rm ${tunnelFileName}
|
|
|
|
ARGS=""
|
|
|
|
if [ ! -z "${CIRCLE_BUILD_NUM}" ]; then
|
|
ARGS="${ARGS} --local-identifier ${CIRCLE_BUILD_NUM}"
|
|
fi
|
|
|
|
echo "Starting Browserstack Local in the background, logging into: ${tunnelLogFile}"
|
|
|
|
# Extension to the BrowserStackLocal binaries, because those can't create a readyfile.
|
|
function create_ready_file {
|
|
# Process ID for the BrowserStack local asynchronous instance.
|
|
tunnelProcessPid=${1}
|
|
|
|
# To be able to exit the tail properly we need to have a sub shell spawned, which is
|
|
# used to track the state of tail.
|
|
{ sleep 120; touch ${tunnelErrorFile}; } &
|
|
|
|
TIMER_PID=${!}
|
|
|
|
# Disown the background process, because we don't want to show any messages when killing
|
|
# the timer.
|
|
disown
|
|
|
|
# When the tail recognizes the `Ctrl-C` log message the BrowserStack Tunnel is up.
|
|
{
|
|
tail -n0 -f ${tunnelLogFile} --pid ${TIMER_PID} | { sed '/Ctrl/q' && kill -9 ${TIMER_PID}; };
|
|
} &> /dev/null
|
|
|
|
echo
|
|
echo "BrowserStack Tunnel ready"
|
|
|
|
# Create the readyfile and write the PID for BrowserStack Local into it.
|
|
echo ${tunnelProcessPid} > ${tunnelReadyFile}
|
|
}
|
|
|
|
browserstack-tunnel/BrowserStackLocal -k ${BROWSER_STACK_ACCESS_KEY} ${ARGS} 2>&1 >> \
|
|
${tunnelLogFile} &
|
|
|
|
# Wait for the tunnel to be ready and create the readyfile with the Browserstack PID
|
|
create_ready_file ${!} &
|