blob: 623b17eb2715d5d0de5c44908b602508a09d2f17 [file] [log] [blame]
#!/bin/bash
# Copyright 2018 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.
### register dev host as target's update source
## usage: fx add-update-source [--type=TYPE] [--name=NAME] [--disable-source=NAME]
##
## Configure target device to use a new update source.
##
## When --type is devhost (the default), configure the target to use the dev
## host's address as seen from the target fuchsia device.
##
## When --type is localhost, configure the target to use 127.0.0.1 as its
## update source.
##
## --name=NAME Name the generated update source config NAME. Defaults to the config type.
## --disable-source=NAME Disable the update source with NAME after adding the new update source.
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
fx-config-read
function usage {
fx-command-help add-update-source
}
function main {
fx-standard-switches "$@"
set -- "${FX_ARGV[@]}"
config_type="devhost"
port="8083"
source_name=""
disable_source=""
while [[ $# -ne 0 ]]; do
case "$1" in
--port)
port="$2"
shift
;;
--type)
config_type="$2"
shift
;;
--name)
source_name="$2"
shift
;;
--disable-source)
disable_source="$2"
shift
;;
*)
echo >&2 "Unrecognized option: $1"
usage
exit 1
esac
shift
done
if [[ -z "${source_name}" ]]; then
source_name="${config_type}"
fi
local local_addr="$(fx-command-run shell 'echo $SSH_CONNECTION' | cut -d ' ' -f 1 | sed 's/%/%25/g')"
if [[ $? -ne 0 || -z "${local_addr}" ]]; then
echo >&2 "Unable to determine target's view of amber address. Is the target up?"
exit 1
fi
repository_dir="${FUCHSIA_BUILD_DIR}/amber-files/repository"
if [[ ! -d "${repository_dir}" ]]; then
echo >&2 "Amber repository does not exist. Please build first."
exit 1
fi
config_url="http://[${local_addr}]:${port}/config.json"
if [[ "${config_type}" == "devhost" ]]; then
repo_url="http://[${local_addr}]:${port}"
elif [[ "${config_type}" == "localhost" ]]; then
repo_url="http://127.0.0.1:${port}"
else
echo >&2 "Unknown config type. Valid options: devhost, localhost"
exit 1
fi
fx-command-run shell amberctl add_src \
-n "${source_name}" \
-f "${config_url}"
err=$?
if [[ $err -ne 0 ]]; then
echo >&2 "Unable to register update source."
if [[ $err -eq 2 ]]; then
# The GET request failed.
echo >&2 " - Is 'fx serve' or 'fx serve-updates' running?"
echo >&2 " - Can the target reach the development host on tcp port 8083?"
fi
return "$err"
fi
if [[ -n "${disable_source}" ]]; then
# Best effort, don't show status or fail on error
fx-command-run shell amberctl disable_src -n "${disable_source}" >/dev/null 2>/dev/null || true
fi
}
main "$@"