63 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|