| #!/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. |
| |
| #### CATEGORY=Software delivery |
| #### DEPRECATED |
| ### push packages to a device |
| |
| ## usage: fx push-package [pkg1 pkg2 ...] |
| ## |
| ## Deprecated: This command is deprecated as it is misleading. Packages in |
| ## Fuchsia are only cached, not installed, and the cache is updated on-demand |
| ## when a component is launched from a fuchsia package URL. An attempt to "push" |
| ## a package as implemented here only performs one of these resolutions, and may |
| ## or may not influence what happens "next" if a user "runs" a component url. As |
| ## such this command influences a poor mental model of the system and should be |
| ## avoided. |
| ## |
| ## Push packages to a device. One or more package names may be supplied. If no |
| ## package name is suppled all packages in the build output will be pushed. The |
| ## target must be reachable from the host and must already know how to reach |
| ## the host package server (i.e. fx serve must be running). |
| ## |
| ## See https://fuchsia.dev/fuchsia-src/development/workflows/package_update |
| ## for more information about using this workflow. |
| |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $? |
| fx-config-read |
| |
| fx-warn "fx push-package is deprecated and should not be used" |
| fx-warn "The notion of 'push' is falsified in this implementation and does not really exist." |
| fx-warn "Users can simply 'fx run <component-url>' in order to affect cache updates." |
| sleep 5 |
| |
| function main { |
| fx-standard-switches "$@" |
| set -- "${FX_ARGV[@]}" |
| |
| # if the second arg is set, but 0-length, publish nothing |
| if [[ $# -eq 1 ]] && [[ -z "${1}" ]]; then |
| exit 0 |
| fi |
| |
| local all_pkgs=($(fx-command-run list-packages)) |
| |
| # pkgs is the last argument |
| local pkgs=() |
| |
| if [[ $# -eq 0 ]]; then |
| fx-warn "Pushing ${#all_pkgs[@]} packages, this may take some time..." |
| pkgs=("${all_pkgs[@]}") |
| else |
| for pkg in "$@"; do |
| for p in "${all_pkgs[@]}"; do |
| if [[ "$p" == "$pkg" ]]; then |
| pkgs+=("$p") |
| continue 2 |
| fi |
| done |
| fx-error "Package $pkg is not known to the current build configuration." |
| fx-error "Check \`fx list-packages\` for the correct name," |
| fx-error "or adjust the build configuration with \`fx set\`." |
| exit 1 |
| done |
| fi |
| |
| for pkg in "${pkgs[@]}"; do |
| if ! fx-command-run shell pkgctl resolve "fuchsia-pkg://fuchsia.com/${pkg}"; then |
| r=$? |
| fx-error "Push of $pkg failed" |
| return $r |
| fi |
| done |
| } |
| |
| main "$@" |