You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							70 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							70 lines
						
					
					
						
							1.5 KiB
						
					
					
				
								#!/usr/bin/env sh
							 | 
						|
								
							 | 
						|
								WORKSPACES=${WORKSPACES:-$HOME/Documents:$HOME/docs/prg}
							 | 
						|
								
							 | 
						|
								IFS=':' findargs=$WORKSPACES
							 | 
						|
								
							 | 
						|
								while test $# -gt 0; do
							 | 
						|
								  case "$1" in
							 | 
						|
								    -d|--depth)
							 | 
						|
								      shift
							 | 
						|
								      if test -z "$1"; then
							 | 
						|
								        echo "No appropriate option given after depth"
							 | 
						|
								        exit 1
							 | 
						|
								      else
							 | 
						|
								        depth="$1"
							 | 
						|
								      fi
							 | 
						|
								      shift;
							 | 
						|
								      ;;
							 | 
						|
								    -*)
							 | 
						|
								      echo "Invalid option $1"
							 | 
						|
								      exit 1
							 | 
						|
								      ;;
							 | 
						|
								    *)
							 | 
						|
								      sessiondir="$1"
							 | 
						|
								      shift;
							 | 
						|
								      ;;
							 | 
						|
								  esac
							 | 
						|
								done
							 | 
						|
								
							 | 
						|
								if test -z "$sessiondir"; then
							 | 
						|
								  if ! test -z "$depth" && test "$depth" -eq 0; then
							 | 
						|
								  sessiondir="$(find $findargs\
							 | 
						|
								    \! -iwholename '*.git*'\
							 | 
						|
								    \! -iwholename '*.vscode*'\
							 | 
						|
								    \! -iwholename '*.idea*'\
							 | 
						|
								    \! -iwholename '*node_modules*'\
							 | 
						|
								    \! -iwholename '*__pycache__*'\
							 | 
						|
								    \! -iwholename '*venv*'\
							 | 
						|
								    -type d 2>/dev/null | fzf)"
							 | 
						|
								  else
							 | 
						|
								  sessiondir="$(find $findargs -maxdepth ${depth:-2}\
							 | 
						|
								    \! -iwholename '*.git*'\
							 | 
						|
								    \! -iwholename '*.vscode*'\
							 | 
						|
								    \! -iwholename '*.idea*'\
							 | 
						|
								    \! -iwholename '*node_modules*'\
							 | 
						|
								    \! -iwholename '*__pycache__*'\
							 | 
						|
								    \! -iwholename '*venv*'\
							 | 
						|
								    -type d 2>/dev/null | fzf)"
							 | 
						|
								  fi
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								if test -z "$sessiondir" || ! test -d "$sessiondir"; then
							 | 
						|
								  echo "$sessiondir is not a directory. Aborting..."
							 | 
						|
								  exit 0
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								name="$(realpath "$sessiondir" | tr '.' '_')"
							 | 
						|
								
							 | 
						|
								if test -z "$TMUX" && test -z "$(pgrep tmux)"; then
							 | 
						|
								  tmux new-session -c "$sessiondir" -s "$name"
							 | 
						|
								else 
							 | 
						|
								  if ! tmux has-session -t="$name" 2> /dev/null; then
							 | 
						|
								    tmux new-session -d -c "$sessiondir" -s "$name"
							 | 
						|
								  fi
							 | 
						|
								  if test -z "$TMUX"; then
							 | 
						|
								    tmux attach -t "$name"
							 | 
						|
								  else
							 | 
						|
								    tmux switch-client -t "$name"
							 | 
						|
								  fi
							 | 
						|
								fi
							 |