80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
const sessionName = "dev-session"
|
|
|
|
func main() {
|
|
if sessionExists(sessionName) {
|
|
handleExistingSession()
|
|
} else {
|
|
createNewSession()
|
|
}
|
|
}
|
|
|
|
func sessionExists(name string) bool {
|
|
cmd := exec.Command("tmux", "has-session", "-t", name)
|
|
return cmd.Run() == nil
|
|
}
|
|
|
|
func handleExistingSession() {
|
|
fmt.Printf("A session named '%s' already exists.\n", sessionName)
|
|
fmt.Print("Do you want to attach to it (a), kill it and create a new one (n), or cancel (c)? ")
|
|
|
|
reader := bufio.NewReader(os.Stdin)
|
|
choice, _ := reader.ReadString('\n')
|
|
choice = strings.TrimSpace(strings.ToLower(choice))
|
|
|
|
switch choice {
|
|
case "a":
|
|
attachToSession()
|
|
case "n":
|
|
killSession()
|
|
createNewSession()
|
|
default:
|
|
fmt.Println("Operation cancelled.")
|
|
}
|
|
}
|
|
|
|
func attachToSession() {
|
|
cmd := exec.Command("tmux", "attach-session", "-t", sessionName)
|
|
cmd.Stdin = os.Stdin
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
if err := cmd.Run(); err != nil {
|
|
fmt.Printf("Error attaching to session: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func killSession() {
|
|
cmd := exec.Command("tmux", "kill-session", "-t", sessionName)
|
|
if err := cmd.Run(); err != nil {
|
|
fmt.Printf("Error killing session: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func createNewSession() {
|
|
cmd := exec.Command("tmux", "new-session", "-d", "-s", sessionName)
|
|
if err := cmd.Run(); err != nil {
|
|
fmt.Printf("Error starting tmux session: %v\n", err)
|
|
return
|
|
}
|
|
|
|
cmd = exec.Command("tmux", "send-keys", "-t", sessionName, "$EDITOR .", "C-m")
|
|
if err := cmd.Run(); err != nil {
|
|
fmt.Printf("Error opening editor: %v\n", err)
|
|
// cmd = exec.Command("tmux", "send-keys", "-t", sessionName, "nvim-lazy .", "C-m")
|
|
// if err := cmd.Run(); err != nil {
|
|
// fmt.Printf("Error opening LazyVim editor: %v\n", err)
|
|
// }
|
|
return
|
|
}
|
|
|
|
attachToSession()
|
|
}
|