diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-03-21 23:03:12 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-03-21 23:03:12 +0530 |
| commit | a7d4c8d5ca59d977642b04688869d98632f1805d (patch) | |
| tree | a3ef215481fc43d9443365c318ff507e8464ffd9 /scripts/utils.sh | |
| parent | a88e917a5f1e089397b3b0e759d0a7e60d6cf8ca (diff) | |
| download | kakoune-config-a7d4c8d5ca59d977642b04688869d98632f1805d.tar.gz kakoune-config-a7d4c8d5ca59d977642b04688869d98632f1805d.zip | |
Fix repl module + refactor custom modes
Diffstat (limited to '')
| -rwxr-xr-x | scripts/utils.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/utils.sh b/scripts/utils.sh new file mode 100755 index 0000000..4c652c1 --- /dev/null +++ b/scripts/utils.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh + +set -e -o pipefail + +dir_has_file() { + dir="$1"; shift; + for arg in ${@}; do + if [ -e "$dir/$arg" ]; then + return 0; + fi + done + return 1; +} + +find_closest() { + init_dir="${1:-"$PWD"}"; shift; + dir="$init_dir"; + while [ "$dir" != "" ] && [ "$dir" != "." ]; do + if [ "$dir" == "/" ]; then + dir="$init_dir" + break; + fi + if dir_has_file "$dir" "$@"; then + break; + fi + dir=$(dirname "$dir"); + done + if [ -f "$dir" ]; then + dirname "$dir"; + else + echo "$dir"; + fi +} + +cmd="$1"; shift; +case "$cmd" in + find_closest) find_closest "$@" ;; +esac |
