package main

import (
	"flag"
	"fmt"
	"log"
	"net/http"
	"os"
	"os/signal"
	"syscall"
)

var port = flag.Int("port", 8080, "The port to host on")

func main() {

	fmt.Println("Initialising...")

	// Set up the close handler
	c := make(chan os.Signal)
	signal.Notify(c, os.Interrupt, syscall.SIGTERM)
	go func() {
		<-c
		fmt.Println("SIGTERM recieved, exiting...")
		os.Exit(0)
	}()

	// Create a new router
	router := NewRouter()

	fmt.Println("Initialised")

	// Listen and serve the http requests
	fmt.Println("Serving HTTP")
	if err := http.ListenAndServe(fmt.Sprintf(":%d", *port), router); err != nil {
		log.Fatal(err)
	}
}