mirror of
https://github.com/Ascyii/scripts.git
synced 2026-01-01 04:44:24 -05:00
Init
This commit is contained in:
64
shell/autostart_server.sh
Executable file
64
shell/autostart_server.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
SESSION_NAME="services"
|
||||
PROJECTS_DIR="$HOME/projects"
|
||||
|
||||
################################
|
||||
|
||||
# autoscan for start.sh in the projects dir
|
||||
|
||||
# Array of [dirname startscript]
|
||||
# Ony extra
|
||||
entries=(
|
||||
"djangowebtrack" "./run.sh host"
|
||||
)
|
||||
|
||||
###################################################
|
||||
|
||||
# Scan folders
|
||||
for dir in "$PROJECTS_DIR"/*/; do
|
||||
dirname="$(basename "$dir")"
|
||||
|
||||
if [[ -x "$dir/start.sh" ]]; then
|
||||
entries+=("$dirname" "./autostart.sh")
|
||||
fi
|
||||
done
|
||||
|
||||
# No entries found
|
||||
if [[ ${#entries[@]} -eq 0 ]]; then
|
||||
echo "No start scripts found in $PROJECTS_DIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Start tmux session if it does not exist
|
||||
if ! tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
|
||||
tmux new-session -d -s "$SESSION_NAME"
|
||||
fi
|
||||
|
||||
# Get list of already existing windows
|
||||
existing_windows=$(tmux list-windows -t "$SESSION_NAME" -F "#{window_name}")
|
||||
|
||||
# Create new windows only if they don't already exist
|
||||
for ((i = 0; i < ${#entries[@]}; i += 2)); do
|
||||
dirname="${entries[i]}"
|
||||
startcmd="${entries[i + 1]}"
|
||||
|
||||
if echo "$existing_windows" | grep -Fxq "$dirname"; then
|
||||
echo "Window '$dirname' already exists, skipping..."
|
||||
else
|
||||
echo "Starting '$dirname'..."
|
||||
tmux new-window -t "$SESSION_NAME" -n "$dirname" "cd \"$PROJECTS_DIR/$dirname\" && $startcmd"
|
||||
fi
|
||||
done
|
||||
|
||||
# Kill default window if empty
|
||||
if tmux list-windows -t "$SESSION_NAME" | grep -q "^1: bash"; then
|
||||
tmux kill-window -t "$SESSION_NAME:1" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Attach if not inside tmux
|
||||
if [[ -z "$TMUX" ]]; then
|
||||
tmux attach-session -t "$SESSION_NAME"
|
||||
else
|
||||
echo "Already inside tmux. Session '$SESSION_NAME' updated."
|
||||
fi
|
||||
Reference in New Issue
Block a user