43 lines
935 B
Go
43 lines
935 B
Go
|
// <script src="https://unpkg.com/htmx.org@1.9.2" integrity="sha384-L6OqL9pRWyyFU3+/bjdSri+iIphTN/bvYyM37tICVyOJkWZLpP2vGn6VUEXgzg6h" crossorigin="anonymous"></script>
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"errors"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
|
||
|
"go.sour.is/pkg/lg"
|
||
|
"go.sour.is/pkg/service"
|
||
|
)
|
||
|
|
||
|
var apps service.Apps
|
||
|
var appName, version = service.AppName()
|
||
|
|
||
|
func main() {
|
||
|
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill)
|
||
|
go func() {
|
||
|
<-ctx.Done()
|
||
|
defer cancel() // restore interrupt function
|
||
|
}()
|
||
|
if err := run(ctx); err != nil {
|
||
|
log.Fatal(err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
}
|
||
|
func run(ctx context.Context) error {
|
||
|
svc := &service.Harness{}
|
||
|
ctx, stop := lg.Init(ctx, appName)
|
||
|
svc.OnStop(stop)
|
||
|
svc.Add(lg.NewHTTP(ctx))
|
||
|
svc.Setup(ctx, apps.Apps()...)
|
||
|
|
||
|
// Run application
|
||
|
if err := svc.Run(ctx, appName, version); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|