blob: d5366474da257f85a7217ef84eff360b297eae83 [file] [log] [blame]
#!/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.
#### CATEGORY=Software delivery
### lists package contents
## usage: fx show-package [package name] [--subpackages|-s]
##
## show-package displays the contents of a fuchsia package.
##
## --subpackages (Optional) Whether or not to include subpackage contents. Defaults to false.
##
## Note that you may need to ensure your build is up to date to get correct
## results (fx build).
set -euo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/updates.sh
fx-config-read
function dump_package_contents {
local merkle="$1"
local prefix="$2"
local show_subpackages=$3
if [ "$merkle" = "null" ]; then
echo "Failed to find package '$1'"
return
fi
fx-command-run far list --archive="$amber_repo/blobs/$merkle"
fx-command-run far cat --archive="$amber_repo/blobs/$merkle" --file=meta/contents
if $show_subpackages; then
local subpackages_json=$(\
fx-command-run far cat --archive="$amber_repo/blobs/$merkle" \
--file=meta/fuchsia.pkg/subpackages)
local subpackages=$(echo $subpackages_json | fx-command-run jq -r ".subpackages | keys[]")
for subpackage in $subpackages
do
echo "================================================================="
echo "Subpackage: $prefix$subpackage"
echo "================================================================="
local merkle=$(echo $subpackages_json | fx-command-run jq -r ".subpackages.\"$subpackage\"")
dump_package_contents "$merkle" "$prefix$subpackage/" ""
done
fi
}
function main {
local include_subpackages=false
local package_name=""
while [[ $# -gt 0 ]]; do
case "$1" in
--help|-h)
fx-command-help
exit 0
;;
--subpackages|-s)
include_subpackages=true
;;
-*|--*)
echo "Unknown option $1"
fx-command-help
exit 1
;;
*)
if ["$package_name" == ""]; then
package_name="$1"
else
echo "Only one package name should be provided"
fx-command-help
exit 1
fi
;;
esac
shift
done
if [ -z "$package_name" ]; then
fx-command-help
exit 1
fi
local merkle
local amber_repo
readonly amber_repo="$FUCHSIA_BUILD_DIR"/amber-files/repository
merkle=$(fx-command-run jq -r ".signed.targets.\"$package_name/0\".custom.merkle" \
"$amber_repo"/targets.json)
dump_package_contents "$merkle" "" $include_subpackages
}
main "$@"