blob: b4d47f6f1764fe01f411dce8ea0bd6a2b0a76c35 [file] [log] [blame]
#!/bin/bash
# Copyright 2017 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.
### reboot a target fuchsia system
## usage: fx reboot [-r|--recovery] [-b|--bootloader]
## -r|--recovery Reboot into recovery image
## -b|--bootloader Reboot into bootloader
##
## This will reboot the device specified with `fx set-device`; otherwise
## one of the devices on the link-local network.
set -e
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
fx-config-read
function usage() {
fx-command-help
}
reboot_type="reboot"
while [[ "$1" =~ ^- ]]; do
case "$1" in
-h|--help)
usage
exit 0
;;
-r|--recovery)
reboot_type="reboot-recovery"
;;
-b|--bootloader)
reboot_type="reboot-bootloader"
;;
*)
break
esac
shift
done
if [[ $# -gt 1 ]]; then
usage
exit 1
fi
# If the OS X firewall is enabled, add timeout so users can click the network connection warning
# dialog.
if [[ "$(uname -s)" = "Darwin" ]] &&
[[ "$("/usr/libexec/ApplicationFirewall/socketfilterfw" "--getglobalstate" | grep -i -c "enabled" || echo -n 0)" = "1" ]]; then
timeout_flag="--timeout=3000"
else
timeout_flag="--nowait"
fi
device=$(get-device-name)
if [[ -z ${device} ]] &&
[[ $("${ZIRCON_TOOLS_DIR}/netls" "${timeout_flag}" | grep -i -c "device ") > "1" ]] ; then
echo "Rebooting some device... Consider using \`fx set-device\` if you have multiple devices."
else
echo "Rebooting ${device}..."
fi
"${ZIRCON_TOOLS_DIR}/netruncmd" "${timeout_flag}" "${device}" "dm ${reboot_type}"