| #!/bin/bash |
| # Copyright 2020 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Enable error checking for all commands |
| err_print() { |
| echo "Error at $1" |
| stty sane |
| } |
| trap 'err_print $0:$LINENO' ERR |
| set -e |
| |
| SCRIPT_SRC_DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)" |
| # shellcheck disable=SC1090 |
| source "${SCRIPT_SRC_DIR}/fuchsia-common.sh" || exit $? |
| # Computed from instance id at https://chrome-infra-packages.appspot.com/p/fuchsia_internal/gui_tools/fuchsia_devtools/linux-amd64/+/dogfood-1-1 |
| VER_DEVTOOLS="$(cat "${SCRIPT_SRC_DIR}/devtools.version")" |
| |
| FUCHSIA_IMAGE_WORK_DIR="$(get-fuchsia-sdk-data-dir)" |
| export FUCHSIA_IMAGE_WORK_DIR |
| |
| |
| usage () { |
| echo "Usage: $0" |
| echo " [--work-dir <directory to store image assets>]" |
| echo " Defaults to ${FUCHSIA_IMAGE_WORK_DIR}" |
| echo " [--private-key <identity file>]" |
| echo " Uses additional private key when using ssh to access the device." |
| echo " [--version <version>" |
| echo " Specify the CIPD version of DevTools to download." |
| echo " Defaults to devtools.version file with ${VER_DEVTOOLS}" |
| echo " [--help] [-h]" |
| echo " Show command line options available" |
| } |
| |
| PRIVATE_KEY_FILE="" |
| FDT_ARGS=() |
| |
| # Parse command line |
| while (( "$#" )); do |
| case $1 in |
| --work-dir) |
| shift |
| FUCHSIA_IMAGE_WORK_DIR="${1:-.}" |
| ;; |
| --private-key) |
| shift |
| PRIVATE_KEY_FILE="${1}" |
| ;; |
| --version) |
| shift |
| VER_DEVTOOLS="${1}" |
| ;; |
| --help|-h) |
| usage |
| exit 0 |
| ;; |
| *) |
| # Unknown options are passed to Fuchsia DevTools |
| FDT_ARGS+=( "$1" ) |
| ;; |
| esac |
| shift |
| done |
| |
| readonly PRIVATE_KEY_FILE |
| |
| # Do not create directory names with : otherwise LD_PRELOAD or PATH usage will fail. |
| # Avoid / to prevent extra sub-directories being created. |
| LABEL_DEVTOOLS="$(echo "${VER_DEVTOOLS}" | tr ':/' '_')" |
| |
| # Can download Fuchsia DevTools from CIPD with either "latest" or a CIPD hash |
| echo "Downloading Fuchsia DevTools ${VER_DEVTOOLS} with CIPD" |
| TEMP_ENSURE=$(mktemp /tmp/fuchsia_devtools_cipd_XXXXXX.ensure) |
| cat << end > "${TEMP_ENSURE}" |
| \$ServiceURL https://chrome-infra-packages.appspot.com/ |
| fuchsia_internal/gui_tools/fuchsia_devtools/\${platform} $VER_DEVTOOLS |
| end |
| |
| FDT_DIR="${FUCHSIA_IMAGE_WORK_DIR}/fuchsia_devtools-${LABEL_DEVTOOLS}" |
| if ! run-cipd ensure -ensure-file "${TEMP_ENSURE}" -root "${FDT_DIR}"; then |
| rm "$TEMP_ENSURE" |
| echo "Failed to download Fuchsia DevTools ${VER_DEVTOOLS}." |
| exit 1 |
| fi |
| rm "${TEMP_ENSURE}" |
| |
| export FDT_TOOLCHAIN="GN" |
| FDT_GN_SSH="$(command -v ssh)" |
| export FDT_GN_SSH |
| FDT_SSH_CONFIG="$(get-fuchsia-sshconfig-file)" |
| export FDT_SSH_CONFIG |
| FDT_GN_DEVFIND="$(get-fuchsia-sdk-dir)/tools/device-finder" |
| export FDT_GN_DEVFIND |
| export FDT_DEBUG="true" |
| if [[ "${PRIVATE_KEY_FILE}" != "" ]]; then |
| FDT_SSH_KEY="${PRIVATE_KEY_FILE}" |
| export FDT_SSH_KEY |
| fi |
| echo "Starting system_monitor with FDT_ARGS=[${FDT_ARGS[*]}] and environment:" |
| env | grep FDT_ |
| |
| "${FDT_DIR}/system_monitor/linux/system_monitor" "${FDT_ARGS[@]}" |