Skip to content

Commit

Permalink
changed from running file to building binary and running it, now working
Browse files Browse the repository at this point in the history
  • Loading branch information
eliasuran committed Feb 20, 2024
1 parent 8313355 commit 00efb13
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 36 deletions.
59 changes: 35 additions & 24 deletions gomon.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,43 +33,56 @@ func main() {
// hent path til filen som skal kjøres
file := getPath()

// starter server og returnerer cmd sum bruker til å interacte ned cmd
cmd := startServer(file)
// starter server og får prosessen til serveren som bruker til å interacte serveren som kjører
process := startServer(file)

// initialiserer en var for prosessen til commanden som kjører
serverProcess := cmd.Process
// gir response om at serveren har startet
response(200, "Server started successfully!")

// starter listener som sjekker for endringer i fila før programmet starter for første gang
changeListener(file, serverProcess)
changeListener(file, process)
}

func startServer(file string) *exec.Cmd {
// initialiserer command variabel
cmd := exec.Command("go", "run", file)
func startServer(file string) *os.Process {
// initialiserer go build cmd
cmd := exec.Command("go", "build", "-o", filepath.Join(file, "server"), file)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

// starter programmet og sjekker for en initial error i programmet
err := cmd.Start()
lib.HandleErr("Error starting http server: ", err)
// kjører build commanden
err := cmd.Run()
if err != nil {
response(400, "Error building program: "+err.Error())
}

// gir response om at serveren har startet
response(200, "Server started successfully!")
// kjører executablen som ble laget
cmd = exec.Command(file + "/server")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Start()
if err != nil {
response(400, "Error starting server: "+err.Error())
}

// lagrer prosessen i en variabel, dette gjør at jeg slipper å returnere cmd siden dette er det eneste den brukes til (for nå)
process := cmd.Process

// returnerer cmd
return cmd
// returnerer prosessen
return process
}

func response(status int, message string) {
t := time.Now().Format("15:04:05")
formatting := "%s | [ %d ] %s"
if status == 400 {
color.HiRed("[ %d ] %s", status, message)
color.Red(formatting, t, status, message)
return
}

color.HiGreen("[ %d ] %s", status, message)
color.Green(formatting, t, status, message)
}

func changeListener(filePath string, serverProcess *os.Process) {
func changeListener(filePath string, process *os.Process) {
fullPath := filepath.Join(filePath, "main.go")
initialStat, err := os.Stat(fullPath)

Expand All @@ -87,18 +100,16 @@ func changeListener(filePath string, serverProcess *os.Process) {
if stat.ModTime() != initialStat.ModTime() {
response(200, "Change in file, resarting server...")

if serverProcess != nil {
err = serverProcess.Signal(syscall.SIGTERM)
if process != nil {
err = process.Signal(syscall.SIGTERM)
if err != nil {
response(400, "Error when killing previous process")
fmt.Println(err)
}
serverProcess.Wait()
process.Wait()
}

cmd := startServer(filePath)

serverProcess = cmd.Process
process = startServer(filePath)

initialStat = stat
response(200, "Sucessfully updated")
Expand Down
10 changes: 0 additions & 10 deletions lib/lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,10 @@ package lib

import (
"flag"
"fmt"
"os"
)

// lib
// functions that arent really a core part of the program

func HandleErr(message string, err error) {
if err != nil {
fmt.Println(message, err)
os.Exit(1)
}
}

func ParseFlags() bool {
var helpFlag bool
flag.BoolVar(&helpFlag, "help", false, "help me")
Expand Down
4 changes: 2 additions & 2 deletions test/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import (

func main() {
mux := http.NewServeMux()

k
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
if req.URL.Path != "/" {
http.NotFound(w, req)
return
}
fmt.Fprintf(w, "Hello worwodowild!")
fmt.Fprintf(w, "Hello dwdw!")
})

port := "3000"
Expand Down
Binary file added test/server
Binary file not shown.

0 comments on commit 00efb13

Please sign in to comment.