Fix project.sh to list ~/Projects/<group>/<repo> again
This commit is contained in:
34
project.sh
34
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
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user