0
0

project_launch.zsh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/zsh
  2. if [ -z "$1" ]; then
  3. (sleep 3; exit 1) &
  4. PROJECT=$(timeout 2 fd \
  5. --base-directory ~ \
  6. -d 10 \
  7. -u -E '.[a-fh-zA-FG-Z]*' \
  8. --prune \\.git$ \
  9. -E "Library" \
  10. -E "OrbStack" \
  11. -E "node_modules" \
  12. -E "target" \
  13. -E "dist" \
  14. -E ".bare" \
  15. -E ".cargo" \
  16. -E ".npm" \
  17. -E ".rustup" \
  18. -E "venv" \
  19. -E ".venv" \
  20. -x echo {//} \
  21. | fzf);
  22. else
  23. PROJECT="$1"
  24. fi;
  25. if [ -n "$PROJECT" ]; then
  26. PROJECT=$(realpath "$PROJECT")
  27. NAME=$(basename "$PROJECT")
  28. if git -C "$PROJECT" rev-parse --is-inside-work-tree &>/dev/null; then
  29. GIT_DIR=$(git -C "$PROJECT" rev-parse --git-dir 2>/dev/null)
  30. COMMON_DIR=$(git -C "$PROJECT" rev-parse --git-common-dir 2>/dev/null)
  31. if [[ "$GIT_DIR" != "$COMMON_DIR" ]]; then
  32. REPO_ROOT=$(dirname "$COMMON_DIR")
  33. REPO_NAME=$(basename "$REPO_ROOT")
  34. NAME="$NAME | $REPO_NAME"
  35. fi
  36. fi
  37. tmux select-window -t "$NAME" || \
  38. tmux new-window -c "$PROJECT" -n "$NAME" /bin/zsh $DOTFILES_DIR/.scripts/nvim_launch.zsh "$PROJECT"
  39. else
  40. exit 1
  41. fi;