blob: 54fc54bf001041a34ff5f9cc698d02fc7d202726 [file] [log] [blame]
#!/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=Build
### re-use a previous build directory set up by `fx set`
## usage: fx use DIR
## or: fx --dir DIR use
## or: fx use
##
## Switches further `fx` commands to using a different build directory.
## This only works if `fx --dir DIR set ...` succeeded previously
## (and DIR has not been removed since). The next `fx build` or other
## such command will now refer to DIR. The previous build directory is
## left in place, so you can switch back again with `fx use` later.
##
## fx use without arguments will list the available build directories, naming
## the current active build directory (if any).
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
function main {
local build_dir="$1"
case "${build_dir}" in
-h|--help)
fx-command-help
return 0
;;
esac
if [[ -z "${build_dir}" ]]; then
build_dir="${_FX_BUILD_DIR}"
fi
if [[ -z "${build_dir}" ]]; then
fx-warn "no new build dir selected, listing build directories:"
fx-build-dir-if-present
local current="${FUCHSIA_BUILD_DIR##"${FUCHSIA_DIR}"/}"
if [[ -n "${current}" ]]; then
echo "${current} (current)"
fi
for d in ${FUCHSIA_DIR}/out/*; do
local build_dir="${d##"${FUCHSIA_DIR}"/}"
if [[ "${build_dir}" != out/*.zircon && "${build_dir}" != out/*.device \
&& "${build_dir}" != "${current}" && "${build_dir}" != out/*crash.log ]]; then
echo "${build_dir}"
fi
done
return 1
fi
if [[ "$build_dir" == /* ]]; then
local -r full_build_dir="${build_dir}"
else
local -r full_build_dir="${FUCHSIA_DIR}/${build_dir}"
fi
if [[ -e "${full_build_dir}/args.gn" ]]; then
fx-change-build-dir "${build_dir}"
else
echo "\"${build_dir}\" is not a valid build dir."
echo ""
fx-command-help
exit 1
fi
}
main "$@"