#!/usr/bin/bash # set -o nounset # set -e declare -A sessions=( ["misc"]="~/" ["cloud"]="~/projects/" ["edge"]="~/projects/fabmetrics" # ["qiv"]="~/dev/projects/qiv/code/java/server" # ["buchi"]="~/dev/projects/P17.02/Code/" # ["bosch"]="~/dev/projects/bosch/Code/port/fredwick/source" ) vimSessionsDir="~/.config/nvim/obsessions" function setup() { local session attach session=$1 attach=$2 if tmux has-session -t $1>/dev/null 2>/dev/null; then if [[ $attach == true ]]; then attachSession $session fi else makeSession $session if [[ $attach == true ]]; then attachSession $session fi fi } function makeSession() { local session dir oldTMUX session=$1 dir="${sessions[$session]}" if [[ $insideSession == true ]]; then oldTMUX="$TMUX" TMUX="" fi case "$session" in misc) tmux new-session -s $session -n bash -d >/dev/null 2>/dev/null tmux send-keys -t $session:0 "cd $dir" C-m tmux send-keys -t $session:0 'clear' C-m tmux selectp -t $session:0 tmux splitw -h -p 50 tmux selectp -l tmux new-window -t $session:1 -n bash tmux send-keys -t $session:1 "cd $dir" C-m tmux send-keys -t $session:1 'clear' C-m ;; edge) tmux new-session -s $session -n proc -d >/dev/null 2>/dev/null tmux send-keys -t $session:0 "cd $dir/code/processor" C-m tmux send-keys -t $session:0 'clear' C-m tmux send-keys -t $session:0 'git st' C-m tmux new-window -t $session:1 -n ansible tmux send-keys -t $session:1 "cd $dir/code/edge-device-setup/ansible" C-m tmux send-keys -t $session:1 'clear' C-m tmux new-window -t $session:2 -n edge tmux send-keys -t $session:2 "cd $dir" C-m tmux send-keys -t $session:2 'clear' C-m tmux new-window -t $session:3 -n deploy tmux send-keys -t $session:3 "cd $dir/files/deployment" C-m tmux send-keys -t $session:3 'clear' C-m tmux new-window -t $session:4 -n shell tmux send-keys -t $session:4 "cd $dir" C-m tmux send-keys -t $session:4 'clear' C-m ;; cloud) tmux new-session -s $session -n infra -d >/dev/null 2>/dev/null tmux send-keys -t $session:0 "cd $dir/cloudExo/repos/infrastructure" C-m tmux send-keys -t $session:0 'clear' C-m tmux new-window -t $session:1 -n plat tmux send-keys -t $session:1 "cd $dir/cloudExo/repos/platform" C-m tmux send-keys -t $session:1 'clear' C-m tmux new-window -t $session:2 -n helm tmux send-keys -t $session:2 "cd $dir/cloudExo/repos/infrastructure/charts" C-m tmux send-keys -t $session:2 'clear' C-m tmux new-window -t $session:3 -n files tmux send-keys -t $session:3 "cd $dir/cloudExo/files/" C-m tmux send-keys -t $session:3 'clear' C-m tmux new-window -t $session:4 -n shell tmux send-keys -t $session:4 "cd $dir/cloudExo" C-m tmux send-keys -t $session:4 'clear' C-m tmux new-window -t $session:5 -n azCode tmux send-keys -t $session:5 "cd $dir/cloudAz/code/" C-m tmux send-keys -t $session:5 'clear' C-m ;; esac tmux select-window -t $session:0 if [[ $insideSession == true ]]; then TMUX="$oldTMUX" fi } function attachSession() { if [[ $insideSession == true ]]; then tmux switch-client -t $1 else tmux attach -t $1 fi } if [ $# -gt 0 ]; then arg=$1 if [[ ! -z ${TMUX:-} ]]; then insideSession=true fi case "$arg" in all) for session in "${!sessions[@]}"; do setup $session false done attachSession misc ;; kill) if [ $# -eq 2 ]; then tmux kill-session -t $2 else tmux kill-server && echo "killed all sessions" fi ;; params) parameters="${!sessions[@]} all kill" echo "$parameters" ;; *) if [ ! -z "${sessions[$arg]:-}" ]; then setup $arg true else echo "no such session" exit 1 fi ;; esac else setup misc true fi