aboutsummaryrefslogtreecommitdiff
path: root/scripts/utils.sh
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-03-21 23:03:12 +0530
committerAkshay Nair <phenax5@gmail.com>2026-03-21 23:03:12 +0530
commita7d4c8d5ca59d977642b04688869d98632f1805d (patch)
treea3ef215481fc43d9443365c318ff507e8464ffd9 /scripts/utils.sh
parenta88e917a5f1e089397b3b0e759d0a7e60d6cf8ca (diff)
downloadkakoune-config-a7d4c8d5ca59d977642b04688869d98632f1805d.tar.gz
kakoune-config-a7d4c8d5ca59d977642b04688869d98632f1805d.zip
Fix repl module + refactor custom modes
Diffstat (limited to 'scripts/utils.sh')
-rwxr-xr-xscripts/utils.sh38
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