| #!/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. | |
| #### CATEGORY=Software delivery | |
| ### perform a system OTA on a connected device | |
| ## usage: fx ota [-h|--help] | |
| ## | |
| ## Ask the target to do an OTA. The target will use any update server available | |
| ## to it to do the update. This requires the target have a update server | |
| ## available to it. The 'serve' fx command is typically used to make your | |
| ## development host available to the target as an update server. | |
| ## | |
| ## Arguments: | |
| ## -h|--help Print out this message. | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $? | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/updates.sh || exit $? | |
| fx-config-read | |
| function needs-update { | |
| local system_image_merkle="${FUCHSIA_BUILD_DIR}"/obj/build/images/system_image.meta/meta.far.merkle | |
| [[ $(fx-command-run shell 'read ver < /system/meta;echo $ver') != $(<"${system_image_merkle}") ]] | |
| } | |
| function main { | |
| fx-standard-switches "$@" | |
| set -- "${FX_ARGV[@]}" | |
| check-for-amber-server || return 1 | |
| # Note: the following command continues to run as the system goes into | |
| # reboot, so we lose SSH connection before it "completes". As such the | |
| # following command completes with error, but that is not actually an error. | |
| fx-command-run shell update check-now --monitor | |
| fx-command-run wait | |
| if needs-update; then | |
| fx-error "After update, system appears still out of date." | |
| return 1 | |
| fi | |
| } | |
| main "$@" |