Skip to content

Commit 5b79f26

Browse files
Merge pull request #30 from stackroost/dev
feat(cli): add schedule-restart command to delay server restarts
2 parents 21ad728 + 7d028e3 commit 5b79f26

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

cmd/schedule_restart.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strings"
7+
"time"
8+
9+
"github.com/spf13/cobra"
10+
"stackroost/internal"
11+
"stackroost/internal/logger"
12+
)
13+
14+
var scheduleRestartCmd = &cobra.Command{
15+
Use: "schedule-restart",
16+
Short: "Schedule a server restart after a delay",
17+
Run: func(cmd *cobra.Command, args []string) {
18+
server, _ := cmd.Flags().GetString("server")
19+
delay, _ := cmd.Flags().GetInt("delay")
20+
21+
server = strings.ToLower(server)
22+
if server != "apache" && server != "nginx" && server != "caddy" {
23+
logger.Error("Invalid server type. Use --server apache|nginx|caddy")
24+
os.Exit(1)
25+
}
26+
27+
if delay <= 0 {
28+
delay = 5
29+
}
30+
31+
logger.Info(fmt.Sprintf("Server: %s", server))
32+
logger.Info(fmt.Sprintf("Restart scheduled in %d seconds...", delay))
33+
time.Sleep(time.Duration(delay) * time.Second)
34+
35+
var service string
36+
switch server {
37+
case "apache":
38+
service = "apache2"
39+
case "nginx":
40+
service = "nginx"
41+
case "caddy":
42+
service = "caddy"
43+
}
44+
45+
logger.Info("Restarting now...")
46+
if err := internal.RunCommand("sudo", "systemctl", "restart", service); err != nil {
47+
logger.Error(fmt.Sprintf("Failed to restart %s: %v", service, err))
48+
os.Exit(1)
49+
}
50+
51+
logger.Success(fmt.Sprintf("%s restarted successfully", strings.Title(server)))
52+
},
53+
}
54+
55+
func init() {
56+
rootCmd.AddCommand(scheduleRestartCmd)
57+
scheduleRestartCmd.Flags().String("server", "", "Server to restart (apache|nginx|caddy)")
58+
scheduleRestartCmd.Flags().Int("delay", 5, "Delay in seconds before restart")
59+
scheduleRestartCmd.MarkFlagRequired("server")
60+
}

0 commit comments

Comments
 (0)