summaryrefslogtreecommitdiff
path: root/zshfunc/vcs-info/VCS_INFO_detect_by_dir
diff options
context:
space:
mode:
Diffstat (limited to 'zshfunc/vcs-info/VCS_INFO_detect_by_dir')
-rw-r--r--zshfunc/vcs-info/VCS_INFO_detect_by_dir22
1 files changed, 22 insertions, 0 deletions
diff --git a/zshfunc/vcs-info/VCS_INFO_detect_by_dir b/zshfunc/vcs-info/VCS_INFO_detect_by_dir
new file mode 100644
index 0000000..e0e7da3
--- /dev/null
+++ b/zshfunc/vcs-info/VCS_INFO_detect_by_dir
@@ -0,0 +1,22 @@
+VCS_INFO_detect_by_dir() { #{{{
+ local dirname=$1
+ local basedir="." realbasedir
+
+ realbasedir="$(VCS_INFO_realpath ${basedir})"
+ while [[ ${realbasedir} != '/' ]]; do
+ if [[ -n ${vcs_comm[detect_need_file]} ]] ; then
+ [[ -d ${basedir}/${dirname} ]] && \
+ [[ -e ${basedir}/${dirname}/${vcs_comm[detect_need_file]} ]] && \
+ break
+ else
+ [[ -d ${basedir}/${dirname} ]] && break
+ fi
+
+ basedir=${basedir}/..
+ realbasedir="$(VCS_INFO_realpath ${basedir})"
+ done
+
+ [[ ${realbasedir} == "/" ]] && return 1
+ vcs_comm[basedir]=${realbasedir}
+ return 0
+}