#!/bin/sh set -eu brute_find() { local op="$1" cue="$2" dir="$3" while true; do if [ $op "$dir/$cue" ]; then echo "$dir" elif [ / != "${dir:-/}" ]; then dir="${dir%/*}" continue fi return done} find_run_sh() { local dir="${1:-$PWD}" local try_repo=true local ws= while true; do [ "$PWD" = "$dir" ] || cd "$dir" # find root of repo workspace if $try_repo; then ws="$(brute_find -d .repo "$PWD")" [ -d "$ws" ] || try_repo=false fi # or find root of .git repository if [ ! -d "$ws" ]; then ws="$(git rev-parse --show-superproject-working-tree 2> /dev/null || true)" [ -d "$ws" ] || ws="$(git rev-parse --show-toplevel 2> /dev/null || true)" fi if [ ! -d "$ws" ]; then # no repo? find anything then dir="$(brute_find -x run.sh "$PWD")" [ -z "$dir" ] || echo "$dir/run.sh" elif [ -x "$ws/run.sh" ]; then # found at repo's root echo "$ws/run.sh" elif [ / != "${ws:-/}" ]; then # check on the parent's then dir="${ws%/*}" ws= continue fi return done} run_sh="$(find_run_sh)" if test "x--root" = "x${1:-}"; then if [ -x "$run_sh" ]; then # found echo "$(dirname "$run_sh")" exit 0 fi # failed to find workspace exit 1elif [ -x "$run_sh" ]; then exec "$run_sh" "$@"elif [ "$#" -gt 0 ]; then exec "$@"fi
#!/bin/sh
set -eu
brute_find() {
local op="$1" cue="$2" dir="$3"
while true; do
if [ $op "$dir/$cue" ]; then
echo "$dir"
elif [ / != "${dir:-/}" ]; then
dir="${dir%/*}"
continue
fi
return
done
}
find_run_sh() {
local dir="${1:-$PWD}"
local try_repo=true
local ws=
[ "$PWD" = "$dir" ] || cd "$dir"
# find root of repo workspace
if $try_repo; then
ws="$(brute_find -d .repo "$PWD")"
[ -d "$ws" ] || try_repo=false
# or find root of .git repository
if [ ! -d "$ws" ]; then
ws="$(git rev-parse --show-superproject-working-tree 2> /dev/null || true)"
[ -d "$ws" ] || ws="$(git rev-parse --show-toplevel 2> /dev/null || true)"
# no repo? find anything then
dir="$(brute_find -x run.sh "$PWD")"
[ -z "$dir" ] || echo "$dir/run.sh"
elif [ -x "$ws/run.sh" ]; then
# found at repo's root
echo "$ws/run.sh"
elif [ / != "${ws:-/}" ]; then
# check on the parent's then
dir="${ws%/*}"
ws=
run_sh="$(find_run_sh)"
if test "x--root" = "x${1:-}"; then
if [ -x "$run_sh" ]; then
# found
echo "$(dirname "$run_sh")"
exit 0
# failed to find workspace
exit 1
elif [ -x "$run_sh" ]; then
exec "$run_sh" "$@"
elif [ "$#" -gt 0 ]; then
exec "$@"