Files
factoryman/launchserver.go
Raum0x2A aef97fe613 Added path checks and updated config
- Cleaned up func main()
- Separated config into two sections server and factoryman
- Updated backup.go to reflect changes to config file
- Updated config.go to reflect changes to config.yml as well as added a check to paths in config.yml
- Updated launch.go to reflect changes to config
move cli handler from main to cli.go
2026-04-29 11:39:55 -06:00

43 lines
1.2 KiB
Go

package main
import (
"fmt"
"log"
"os"
"os/exec"
)
func startStopServer(cmd string, con GoConfig) {
switch cmd {
case "start":
x := fmt.Sprintf("%s --port %d --server-settings %s --start-server %s", con.Server.ServExec, con.Factoryman.ServPort, con.Server.ServCfg, con.Server.WorldFile)
if con.Factoryman.UseScreen { // if screen enabled in confing.yml
fmt.Println("Starting factorio server in screen session")
startScreenCmd := exec.Command("screen", "-dmS", con.Factoryman.ScreenName, "bash", "-c", x, "; exec sh")
startScreenCmd.Stdout = os.Stdout
startScreenCmd.Stderr = os.Stderr
err := startScreenCmd.Run()
if err != nil {
log.Fatalf("Failed to start server: %s", err)
}
} else {
startSrvCmd := exec.Command("bash", "-c", x)
startSrvCmd.Stdout = os.Stdout
startSrvCmd.Stderr = os.Stdout
startSrvCmd.Stdin = os.Stdin
err := startSrvCmd.Run()
if err != nil {
log.Fatalf("Failed to start server: %s", err)
}
}
case "stop":
quitServerCmd := exec.Command("screen", "-S", con.Factoryman.ScreenName, "-p", "0", "-X", "stuff", "/quit\n")
err := quitServerCmd.Run()
if err != nil {
log.Fatalf("Command failed: %s, Error: %v", quitServerCmd.Args, err)
} else {
fmt.Println("Server Stopped")
}
}
}