|
|
@ -0,0 +1,70 @@ |
|
|
|
#!/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\ |
|
|
|
\! -name '*.git*'\ |
|
|
|
\! -name '*.vscode*'\ |
|
|
|
\! -name '*.idea*'\ |
|
|
|
\! -name '*node_modules*'\ |
|
|
|
\! -name '*__pycache__*'\ |
|
|
|
\! -name '*venv*'\ |
|
|
|
-type d 2>/dev/null | fzf)" |
|
|
|
else |
|
|
|
sessiondir="$(find $findargs -maxdepth ${depth:-2}\ |
|
|
|
\! -name '*.git*'\ |
|
|
|
\! -name '*.vscode*'\ |
|
|
|
\! -name '*.idea*'\ |
|
|
|
\! -name '*node_modules*'\ |
|
|
|
\! -name '*__pycache__*'\ |
|
|
|
\! -name '*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 |