-
Notifications
You must be signed in to change notification settings - Fork 132
/
fx.go
71 lines (63 loc) · 1.53 KB
/
fx.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
package scheduler
import (
"context"
"github.com/dagu-dev/dagu/internal/config"
"github.com/dagu-dev/dagu/internal/engine"
"github.com/dagu-dev/dagu/internal/logger"
"github.com/dagu-dev/dagu/service/core/scheduler/entry_reader"
"github.com/dagu-dev/dagu/service/core/scheduler/scheduler"
"go.uber.org/fx"
)
var Module = fx.Options(
fx.Provide(EntryReaderProvider),
fx.Provide(JobFactoryProvider),
fx.Provide(New),
)
type Params struct {
fx.In
Config *config.Config
Logger logger.Logger
EntryReader scheduler.EntryReader
}
func EntryReaderProvider(
cfg *config.Config,
engineFactory engine.Factory,
jf entry_reader.JobFactory,
logger logger.Logger,
) scheduler.EntryReader {
return entry_reader.New(entry_reader.Params{
EngineFactory: engineFactory,
// TODO: fix this
DagsDir: cfg.DAGs,
JobFactory: jf,
Logger: logger,
})
}
func JobFactoryProvider(cfg *config.Config, engineFactory engine.Factory) entry_reader.JobFactory {
return &jobFactory{
Command: cfg.Command,
WorkDir: cfg.WorkDir,
EngineFactory: engineFactory,
}
}
func New(params Params) *scheduler.Scheduler {
return scheduler.New(scheduler.Params{
EntryReader: params.EntryReader,
Logger: params.Logger,
// TODO: check this is used
LogDir: params.Config.LogDir,
})
}
func LifetimeHooks(lc fx.Lifecycle, a *scheduler.Scheduler) {
lc.Append(
fx.Hook{
OnStart: func(ctx context.Context) (err error) {
return a.Start()
},
OnStop: func(_ context.Context) error {
a.Stop()
return nil
},
},
)
}