From 4e53bc4795c420f054a42464582340c82975c8fa Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 24 Feb 2026 18:21:29 +0000 Subject: [PATCH] Fix project.sh to list ~/Projects// again --- project.sh | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/project.sh b/project.sh index 277aede..0c30bce 100755 --- a/project.sh +++ b/project.sh @@ -4,23 +4,33 @@ set -e projects_dir=$HOME/Projects -# Find git repositories and worktrees +# All depth-2 directories without @ are included unconditionally +projects=() +for dir in "$projects_dir"/*/*/; do + [ -d "$dir" ] || continue + relative="${dir#$projects_dir/}" + relative="${relative%/}" + [[ "$relative" != *@* ]] && projects+=("$relative") +done + +# For @ directories, only include those with .git if command -v fd &>/dev/null; then - projects=$( - fd -H '^\.git$' "$projects_dir" | - sed -E -e "s|^$projects_dir/||" -e 's|/\.git/?$||' | - sort -u - ) + while IFS= read -r line; do + projects+=("$line") + done < <(fd -H '^\.git$' "$projects_dir" | + grep '@' | + sed -E -e "s|^$projects_dir/||" -e 's|/\.git/?$||') else - projects=$( - find "$projects_dir" \( -name 'node_modules' -o -name '.git' \) -prune -name '.git' -print | - sed -E -e "s|^$projects_dir/||" -e 's|/\.git/?$||' | - sort -u - ) + while IFS= read -r line; do + projects+=("$line") + done < <(find "$projects_dir" \( -name 'node_modules' -o -name '.git' \) \ + -prune -name '.git' -print | + grep '@' | + sed -E -e "s|^$projects_dir/||" -e 's|/\.git/?$||') fi project=$( - echo "$projects" | + printf '%s\n' "${projects[@]}" | sort -u | fzf --layout=reverse --info=hidden --border=rounded --cycle )