blob: 357f7f9aea5e1d88dc6348a507048f7a5cbc5dc8 [file] [log] [blame]
#!/bin/bash
# Copyright 2022 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=Other
### Convenience wrapper for running the product size checker.
## usage: fx size-check [--assembly-manifest <assembly-manifest-file>]
## [--base-assembly-manifest <assembly-manifest-file>]
## [--visualization_dir <output-directory>]
##
## Convenience wrapper for running the product size checker.
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read
readonly ASSEMBLY_MANIFESTS_JSON="assembly_manifests.json"
function _query_manifest {
local manifest="$1"
local jq_filter="$2"
local paths=($(fx-command-run jq --raw-output "${jq_filter}" "${FUCHSIA_BUILD_DIR}/${manifest}"))
# At most one path is supported.
if [[ ${#paths[@]} -gt 1 ]]; then
fx-error "More than one 'fuchsia' assembly manifest found in ${FUCHSIA_BUILD_DIR}/${manifest}!"
exit 1
fi
printf %s "${paths[0]}"
}
# Find the assembly manifest for the "fuchsia" product (the main one).
manifest_query=$(_query_manifest "${ASSEMBLY_MANIFESTS_JSON}" '.[] | select(.image_name == "fuchsia") | .assembly_manifest_path')
if [[ -z "${manifest_query}" ]]; then
exit 1
fi
assembly_manifest="$FUCHSIA_BUILD_DIR/$manifest_query"
visualization_dir="$FUCHSIA_BUILD_DIR/size_visualization"
flags=""
# Flag parsing.
while [[ "$1" =~ ^- ]]; do
case "$1" in
--assembly-manifest)
shift
assembly_manifest="$1"
;;
--base-assembly-manifest)
shift
flags="${flags} --base-assembly-manifest $1"
;;
--visualization-dir)
shift
visualization_dir="$1"
;;
*)
echo Bad option "$1"
echo
fx-command-help
exit 1
esac
shift
done
ffx --config assembly_enabled=true assembly size-check product \
--assembly-manifest $assembly_manifest \
--visualization-dir $visualization_dir \
--verbose $flags