blob: fd55725fa577bdba36515801f0eeaab96a009a7b [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2024 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=Source tree
### Finds the nearest OWNERS file corresponding to the provided path, or the
### current working directory.
## usage: fx list-owners src/devices/bus/drivers/pci/bus.cc
## fx list-owners src/connectivity
## fx list-owners (. is implied)
##
## This command attempts to list the nearest OWNERS file corresponding to a
## target file or directory, or current directory if not otherwise specificed.
##
## It does not handle files that have file-specific mention in an OWNERS file
## outside of file's directory.
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read
# Search for the OWNERS current directory, or of the file provided. Use the full
# path to avoid issues with `.` that can crop up when giving relative paths.
dir=$(realpath "${1:-$PWD}")
# IF we were given a file then lets figure out where it is.
if [[ -f "${dir}" ]]; then
dir=$(dirname "${dir}/")
fi
if [[ ! "${dir}" == *"${FUCHSIA_DIR}"* ]]; then
echo "Error: Did not find \$FUCHSIA_DIR (${FUCHSIA_DIR}) in ${dir}"
exit 1
fi
pushd "${dir}" >/dev/null || exit
until [[ -f OWNERS || $PWD == "${FUCHSIA_DIR}" ]]; do
cd ..
done
if [ -f OWNERS ]; then
echo "/${PWD#"$FUCHSIA_DIR"}/OWNERS:"
cat OWNERS
else
echo "Couldn't find OWNERS file for $dir (This shouldn't happen because FUCHSIA_DIR should have one!)"
fi
popd >/dev/null || exit