-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
84 lines (68 loc) · 2.06 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package main
import (
"context"
"fmt"
"log"
"log/slog"
"os"
core "github.com/SwissOpenEM/Ingestor/internal/core"
"github.com/SwissOpenEM/Ingestor/internal/metadataextractor"
"github.com/SwissOpenEM/Ingestor/internal/webserver"
"gopkg.in/yaml.v2"
)
// String can be overwritten by using linker flags: -ldflags "-X main.version=VERSION"
var version string = "DEVELOPMENT_VERSION"
func setupLogging(logLevel string) {
level := slog.LevelDebug
switch logLevel {
case "Info":
level = slog.LevelInfo
case "Debug":
level = slog.LevelDebug
case "Error":
level = slog.LevelError
case "Warning":
level = slog.LevelWarn
}
opts := &slog.HandlerOptions{Level: level}
h := slog.NewTextHandler(os.Stdout, opts)
slog.SetDefault(slog.New(h))
}
func main() {
slog.Info("Starting ingestor service", "Version", version)
var config core.Config
configFileReader := core.NewConfigReader()
var err error
if config, err = configFileReader.ReadConfig(core.DefaultConfigFileName()); err != nil {
slog.Info("Reading config", "file", configFileReader.GetCurrentConfigFilePath())
panic(fmt.Errorf("failed to read config file: %w", err))
}
slog.Info("Config read", "Filepath", configFileReader.GetCurrentConfigFilePath())
configData, _ := yaml.Marshal(configFileReader.GetFullConfig())
println(string(configData))
setupLogging(config.WebServer.LogLevel)
ctx := context.Background()
u, foundName := os.LookupEnv("INGESTOR_SERVICE_USER_NAME")
p, foundPass := os.LookupEnv("INGESTOR_SERVICE_USER_PASS")
var serviceAcc *core.UserCreds = nil
if foundName && foundPass {
serviceAcc = &core.UserCreds{
Username: u,
Password: p,
}
}
tq := core.TaskQueue{
Config: config,
AppContext: ctx,
Notifier: core.NewLoggingNotifier(),
ServiceUser: serviceAcc,
}
tq.Startup()
eh := metadataextractor.NewExtractorHandler(config.MetadataExtractors)
ingestor, err := webserver.NewIngestorWebServer(version, &tq, eh, config.WebServer)
if err != nil {
log.Fatal(err)
}
s := webserver.NewIngesterServer(ingestor, config.WebServer.Port)
log.Fatal(s.ListenAndServe())
}