feat: cli app

This commit is contained in:
2025-11-04 19:17:50 +01:00
parent 7d160d5f59
commit 8f5ae15ef0
14 changed files with 357 additions and 94 deletions

63
cmd/invoicer/services.go Normal file
View File

@@ -0,0 +1,63 @@
package main
import (
"log"
"log/slog"
"os"
"path"
"code.gitea.io/sdk/gitea"
"git.schreifuchs.ch/lou-taylor/accounting/internal/config"
"git.schreifuchs.ch/lou-taylor/accounting/internal/email"
"git.schreifuchs.ch/lou-taylor/accounting/internal/pdf"
"git.schreifuchs.ch/lou-taylor/accounting/pkg/invoice"
)
func getConfig() (cfg *config.Config) {
cfg, err := config.Load("config.json")
if err == nil {
return cfg
}
cfg, err = config.Load(path.Join(os.Getenv("HOME"), ".config/invoicer/config.json"))
if err == nil {
return cfg
}
cfg, err = config.Load("/etc/invoicer/config.json")
if err == nil {
return cfg
}
log.Fatal("no cli config found")
return cfg
}
func getServices() (invoicer *invoice.Service, mailer *email.Service) {
cfg := getConfig()
logr := slog.New(slog.NewTextHandler(os.Stdout, nil))
giteaC, err := gitea.NewClient(
cfg.Gitea.URL,
gitea.SetToken(cfg.Gitea.Token),
)
if err != nil {
log.Fatal("could not connect to gitea: %v", err)
return invoicer, mailer
}
gotenberg, err := pdf.New(cfg.PDF.Hostname)
if err != nil {
panic(err)
}
if err != nil {
log.Fatal("could not connect to gotenberg: %v", err)
return invoicer, mailer
}
mailer, err = email.New(cfg.Email)
if err != nil {
log.Fatal("could not create mailer: %v", err)
return invoicer, mailer
}
invoicer = invoice.New(logr, giteaC, gotenberg)
return invoicer, mailer
}