From 2cdf1bf701a1ad0b2e3a5d1ffb63edd142ebd6ec Mon Sep 17 00:00:00 2001 From: Martin Pander Date: Fri, 15 Dec 2023 07:59:53 +0100 Subject: [PATCH] Add scripts --- bin/o | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100755 bin/o diff --git a/bin/o b/bin/o new file mode 100755 index 0000000..d279dc2 --- /dev/null +++ b/bin/o @@ -0,0 +1,163 @@ +#!/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