Recursive ignore files

This commit is contained in:
2026-03-08 14:38:15 +01:00
parent 6418b64672
commit b1f69673d1

26
kewt.sh
View File

@@ -154,7 +154,7 @@ out="${out%/}"
[ -d "$src" ] || die "Source directory '$src' does not exist." [ -d "$src" ] || die "Source directory '$src' does not exist."
IGNORE_ARGS="-name .git -o -name .kewtignore -o -name .*" IGNORE_ARGS="-name '.kewtignore' -o -name '.*'"
if [ -f "$src/.kewtignore" ]; then if [ -f "$src/.kewtignore" ]; then
while IFS= read -r line || [ -n "$line" ]; do while IFS= read -r line || [ -n "$line" ]; do
@@ -168,21 +168,23 @@ if [ -f "$src/.kewtignore" ]; then
pattern_clean="${pattern_clean%/}" pattern_clean="${pattern_clean%/}"
if echo "$pattern" | grep -q "/"; then if echo "$pattern" | grep -q "/"; then
IGNORE_ARGS="$IGNORE_ARGS -o -path '$src/$pattern_clean'" IGNORE_ARGS="$IGNORE_ARGS -o -path '$src/$pattern_clean' -o -path '$src/$pattern_clean/*'"
else else
IGNORE_ARGS="$IGNORE_ARGS -o -name '$pattern_clean'" IGNORE_ARGS="$IGNORE_ARGS -o -name '$pattern_clean'"
fi fi
done < "$src/.kewtignore" done < "$src/.kewtignore"
fi fi
for ki in $(find "$src" -name .kewtignore); do find "$src" -name .kewtignore > "/tmp/kewt_ignore_$$"
while read -r ki; do
d="${ki%/.kewtignore}" d="${ki%/.kewtignore}"
if [ "$d" != "$src" ] && [ "$d" != "." ]; then if [ "$d" != "$src" ] && [ "$d" != "." ]; then
IGNORE_ARGS="$IGNORE_ARGS -o -path '$d'" IGNORE_ARGS="$IGNORE_ARGS -o -path '$d' -o -path '$d/*'"
fi fi
done done < "/tmp/kewt_ignore_$$"
rm -f "/tmp/kewt_ignore_$$"
HIDE_ARGS="-name .git -o -name .kewtignore -o -name .kewthide -o -name .kewtpreserve -o -name .*" HIDE_ARGS="-name '.kewtignore' -o -name '.kewthide' -o -name '.kewtpreserve' -o -name '.*'"
if [ -f "$src/.kewthide" ]; then if [ -f "$src/.kewthide" ]; then
while IFS= read -r line || [ -n "$line" ]; do while IFS= read -r line || [ -n "$line" ]; do
@@ -203,12 +205,14 @@ if [ -f "$src/.kewthide" ]; then
done < "$src/.kewthide" done < "$src/.kewthide"
fi fi
for kh in $(find "$src" -name .kewthide); do find "$src" -name .kewthide > "/tmp/kewt_hide_$$"
while read -r kh; do
d="${kh%/.kewthide}" d="${kh%/.kewthide}"
if [ "$d" != "$src" ] && [ "$d" != "." ]; then if [ "$d" != "$src" ] && [ "$d" != "." ]; then
HIDE_ARGS="$HIDE_ARGS -o -path '$d' -o -path '$d/*'" HIDE_ARGS="$HIDE_ARGS -o -path '$d' -o -path '$d/*'"
fi fi
done done < "/tmp/kewt_hide_$$"
rm -f "/tmp/kewt_hide_$$"
PRESERVE_ARGS="-false" PRESERVE_ARGS="-false"
@@ -231,12 +235,14 @@ if [ -f "$src/.kewtpreserve" ]; then
done < "$src/.kewtpreserve" done < "$src/.kewtpreserve"
fi fi
for kp in $(find "$src" -name .kewtpreserve); do find "$src" -name .kewtpreserve > "/tmp/kewt_preserve_$$"
while read -r kp; do
d="${kp%/.kewtpreserve}" d="${kp%/.kewtpreserve}"
if [ "$d" != "$src" ] && [ "$d" != "." ]; then if [ "$d" != "$src" ] && [ "$d" != "." ]; then
PRESERVE_ARGS="$PRESERVE_ARGS -o -path '$d' -o -path '$d/*'" PRESERVE_ARGS="$PRESERVE_ARGS -o -path '$d' -o -path '$d/*'"
fi fi
done done < "/tmp/kewt_preserve_$$"
rm -f "/tmp/kewt_preserve_$$"
generate_nav() { generate_nav() {
dinfo=$(eval "find \"$1\" \( $IGNORE_ARGS -o $HIDE_ARGS -o $PRESERVE_ARGS \) -prune -o -print" | sort | awk -v src="$1" -f "$awk_dir/collect_dir_info.awk") dinfo=$(eval "find \"$1\" \( $IGNORE_ARGS -o $HIDE_ARGS -o $PRESERVE_ARGS \) -prune -o -print" | sort | awk -v src="$1" -f "$awk_dir/collect_dir_info.awk")