64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
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.Fatalf("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.Fatalf("could not connect to gotenberg: %v", err)
|
|
return invoicer, mailer
|
|
}
|
|
mailer, err = email.New(cfg.Email)
|
|
if err != nil {
|
|
log.Fatalf("could not create mailer: %v", err)
|
|
return invoicer, mailer
|
|
}
|
|
|
|
invoicer = invoice.New(logr, giteaC, gotenberg)
|
|
return invoicer, mailer
|
|
}
|