Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
lewislbr committed Mar 17, 2021
1 parent 1e81495 commit 35445f7
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 21 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GSS

GSS (Go serve SPA) is a web server for single-page applications written in Go using the standard library.
GSS (Go serve SPA) is a web server for single-page applications written in Go.

## Features

Expand Down
39 changes: 19 additions & 20 deletions src/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,56 +25,59 @@ type configYAML struct {
}

func main() {
setUpYAML()
err := setUpYAML()
if err != nil {
log.Fatalf("GSS error: something went wrong with the YAML file: %v ❌\n", err)
}

setUpCLI()

// Check if the directory to serve exists
if _, err := os.Stat(dir); os.IsNotExist(err) {
log.Fatalf("GSS error: directory %q not found ❌\n", dir)
}

startServer()
err = startServer()
if err != nil {
log.Fatalf("GSS error: the server crashed: %v ❌\n", err)
}
}

// startServer initializes the server.
func startServer() {
func startServer() error {
httpServer := customHTTPServer(port, addHeaders(serveSPA(dir)))

log.Printf("GSS success: serving directory %q on port %v ✅\n", dir, port)
log.Printf("GSS info: serving directory %q on port %v ✅\n", dir, port)

err := httpServer.ListenAndServe()
if err != nil {
log.Fatalf("GSS error: the server crashed: %v ❌\n", err)
return err
}

return nil
}

// setUpYAML enables configuration via YAML file.
func setUpYAML() {
func setUpYAML() error {
configFile := "gss.yaml"

// Check if there is a config file
if _, err := os.Stat(configFile); os.IsNotExist(err) {
log.Println("GSS info: no YAML config found ℹ️")

return
return nil
}

// Read the file
content, err := os.ReadFile(configFile)
if err != nil {
log.Fatalf("GSS error: the YAML file could not be read: %v ❌\n", err)

return
return err
}

config := configYAML{}

// Serialize the YAML content
err = yaml.Unmarshal([]byte(content), &config)
if err != nil {
log.Fatalf("GSS error: the YAML file content could not be processed: %v ❌\n", err)

return
return err
}

// Check if values are empty
Expand All @@ -93,7 +96,7 @@ func setUpYAML() {
port = config.Port
}

log.Println("GSS info: using YAML config ℹ️")
return nil
}

// setUpCLI enables configuration via CLI flags.
Expand All @@ -105,8 +108,6 @@ func setUpCLI() {

// Check if flags are set up
if *d == dir && *p == port {
log.Println("GSS info: no CLI flags set up ℹ️")

return
}

Expand All @@ -117,8 +118,6 @@ func setUpCLI() {
if *p != "" {
port = *p
}

log.Println("GSS info: using CLI flags ℹ️")
}

// customHTTPServer configures a basic HTTP server
Expand Down

0 comments on commit 35445f7

Please sign in to comment.