49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/zsh
|
|
setopt extended_glob
|
|
|
|
# See go/fzf-at-google for more on this script.
|
|
#
|
|
# Thanks to yoongu@, smithian@ and others for help with the approach. See this
|
|
# discussion for more history:
|
|
#
|
|
# https://groups.google.com/a/google.com/g/zsh-users/c/gLVYmwSy_lg/m/x6wnesDFCAAJ
|
|
|
|
# This prints paths we care about. Source it with $(${path_to_file}) and then
|
|
# feed it to FZF. This assumes that the content will be passed to `rg`, which
|
|
# means it does things like recursively search the current working directory by
|
|
# default.
|
|
|
|
# These are relative to google3.
|
|
#
|
|
# NOTE: These are examples relevant to my own projects. Change replace them with
|
|
# your own.
|
|
RELEVANT_FILE_PATHS=(
|
|
"experimental/users/$USER"
|
|
"java/com/google/android/gmscore/integ"
|
|
"javatests/com/google/android/gmscore/integ"
|
|
)
|
|
|
|
SEARCH_REL_PATHS=()
|
|
|
|
# If we are in a google3 directory, use our relevant files. Otherwise, assume
|
|
# we're in something like ~/dotfiles and return everything since we don't need
|
|
# to be smart.
|
|
if [[ $PWD == (#b)(/google/src/cloud/${USER}/[^/]##/google3)* ]]; then
|
|
# Get the google3 absolute path as a backreference (#b).
|
|
GOOGLE3_ABS_PATH=${match[1]}
|
|
# Prepend google3 to get absolute whitelists.
|
|
WHITELIST_ABS_PATHS=(${RELEVANT_FILE_PATHS/#/${GOOGLE3_ABS_PATH}/})
|
|
# We only search a path if it's either the PWD or descended from it.
|
|
SEARCH_ABS_PATH=(${(M)WHITELIST_ABS_PATHS:#${PWD}(|/*)})
|
|
# Remove hte leading / as well
|
|
SEARCH_REL_PATHS=(${SEARCH_ABS_PATH/${PWD}\//})
|
|
fi
|
|
|
|
# Default to searching the PWD.
|
|
if [[ ${#SEARCH_REL_PATHS} == 0 ]]; then
|
|
SEARCH_REL_PATHS=("")
|
|
fi
|
|
|
|
echo $SEARCH_REL_PATHS
|
|
|