Files
ana-ledger/cmd/http/main.go
bel b6c6e83443
All checks were successful
cicd / ci (push) Successful in 1m39s
Refactoring http/main into http router
2024-07-20 09:27:26 -06:00

63 lines
1.4 KiB
Go

package http
import (
"embed"
"flag"
"fmt"
"io/fs"
"log"
"net/http"
"os"
_ "embed"
"gogs.inhome.blapointe.com/ana-ledger/src/ledger"
)
//go:embed public/*
var _staticFileDir embed.FS
var publicHandler = func() http.Handler {
if os.Getenv("DEBUG") != "" {
return http.FileServer(http.Dir("./http/public"))
}
sub, err := fs.Sub(_staticFileDir, "public")
if err != nil {
panic(err)
}
return http.FileServer(http.FS(sub))
}()
func Main() {
likeName := flag.String("like-name", ".", "regexp to match")
likeBefore := flag.String("like-before", "9", "date str to compare")
likeAfter := flag.String("like-after", "0", "date str to compare")
groupName := flag.String("group-name", ".*", "grouping to apply to names")
groupDate := flag.String("group-date", ".*", "grouping to apply to dates")
bpiPath := flag.String("bpi", "/dev/null", "bpi file")
httpOutput := flag.String("http", ":8080", "http output listen address, like :8080")
flag.Parse()
if flag.NArg() < 1 {
panic(fmt.Errorf("positional arguments for files required"))
}
f, err := ledger.NewFiles(flag.Args()[0], flag.Args()[1:]...)
if err != nil {
panic(err)
}
r := NewRouter(
f,
*likeName,
*likeBefore,
*likeAfter,
*groupName,
*groupDate,
*bpiPath,
)
log.Println("listening on", *httpOutput)
if err := http.ListenAndServe(*httpOutput, r); err != nil {
panic(err)
}
}