@@ -101,77 +101,72 @@ <h2>
101101< span id ="L44 " class ="ln "> 44 </ span >
102102< span id ="L45 " class ="ln "> 45 </ span > func main() {
103103< span id ="L46 " class ="ln "> 46 </ span >
104- < span id ="L47 " class ="ln "> 47 </ span > < span class =" comment " > // Uncomment the following lines to enable the pprof HTTP server for debugging </ span >
105- < span id ="L48 " class ="ln "> 48 </ span > < span class =" comment " > // go func() {</ span >
106- < span id ="L49 " class ="ln "> 49 </ span > < span class =" comment " > // panic(http.ListenAndServe(":6060", nil)) </ span >
107- < span id ="L50 " class ="ln "> 50 </ span > < span class =" comment " > // }() </ span >
108- < span id ="L51 " class ="ln "> 51 </ span >
109- < span id ="L52 " class ="ln "> 52 </ span > exitCode.Store(cmdopts.ExitCodeOK)
110- < span id ="L53 " class ="ln "> 53 </ span > defer func() {
111- < span id ="L54 " class ="ln "> 54 </ span > if err := recover(); err != nil {
112- < span id ="L55 " class ="ln "> 55 </ span > exitCode.Store(cmdopts.ExitCodeFatalError)
113- < span id ="L56 " class ="ln "> 56 </ span > log.GetLogger( mainCtx).WithField("callstack", string(debug.Stack())).Error(err )
114- < span id ="L57 " class ="ln "> 57 </ span > }
115- < span id ="L58 " class ="ln "> 58 </ span > Exit(int(exitCode.Load()) )
116- < span id ="L59 " class ="ln "> 59 </ span > }()
117- < span id ="L60 " class ="ln "> 60 </ span >
118- < span id ="L61 " class ="ln "> 61 </ span > mainCtx, cancel = context.WithCancel(context.Background() )
119- < span id ="L62 " class ="ln "> 62 </ span > setupCloseHandler(cancel )
120- < span id ="L63 " class ="ln "> 63 </ span > defer cancel()
121- < span id ="L64 " class ="ln "> 64 </ span >
122- < span id ="L65 " class ="ln "> 65 </ span > if opts, err = cmdopts.New(os.Stdout); err != nil {
123- < span id ="L66 " class ="ln "> 66 </ span > printVersion()
124- < span id ="L67 " class ="ln "> 67 </ span > fmt.Println(err)
125- < span id ="L68 " class ="ln "> 68 </ span > if !opts.Help {
126- < span id ="L69 " class ="ln "> 69 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
127- < span id ="L70 " class ="ln "> 70 </ span > }
128- < span id ="L71 " class ="ln "> 71 </ span > return
129- < span id ="L72 " class ="ln "> 72 </ span > }
130- < span id ="L73 " class ="ln "> 73 </ span >
131- < span id ="L74 " class ="ln "> 74 </ span > < span class =" comment " > // check if some sub-command was executed and exit </ span >
132- < span id ="L75 " class ="ln "> 75 </ span > if opts.CommandCompleted {
133- < span id ="L76 " class ="ln "> 76 </ span > exitCode.Store(opts.ExitCode )
134- < span id ="L77 " class ="ln "> 77 </ span > return
135- < span id ="L78 " class ="ln "> 78 </ span > }
104+ < span id ="L47 " class ="ln "> 47 </ span > exitCode.Store(cmdopts.ExitCodeOK)
105+ < span id ="L48 " class ="ln "> 48 </ span > defer func() {
106+ < span id ="L49 " class ="ln "> 49 </ span > if err := recover(); err != nil {
107+ < span id ="L50 " class ="ln "> 50 </ span > exitCode.Store(cmdopts.ExitCodeFatalError)
108+ < span id ="L51 " class ="ln "> 51 </ span > log.GetLogger(mainCtx).WithField("callstack", string(debug.Stack())).Error(err)
109+ < span id ="L52 " class ="ln "> 52 </ span > }
110+ < span id ="L53 " class ="ln "> 53 </ span > Exit(int(exitCode.Load()))
111+ < span id ="L54 " class ="ln "> 54 </ span > }()
112+ < span id ="L55 " class ="ln "> 55 </ span >
113+ < span id ="L56 " class ="ln "> 56 </ span > mainCtx, cancel = context.WithCancel(context.Background() )
114+ < span id ="L57 " class ="ln "> 57 </ span > setupCloseHandler(cancel)
115+ < span id ="L58 " class ="ln "> 58 </ span > defer cancel( )
116+ < span id ="L59 " class ="ln "> 59 </ span >
117+ < span id ="L60 " class ="ln "> 60 </ span > if opts, err = cmdopts.New(os.Stdout); err != nil {
118+ < span id ="L61 " class ="ln "> 61 </ span > printVersion( )
119+ < span id ="L62 " class ="ln "> 62 </ span > fmt.Println(err )
120+ < span id ="L63 " class ="ln "> 63 </ span > if !opts.Help {
121+ < span id ="L64 " class ="ln "> 64 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
122+ < span id ="L65 " class ="ln "> 65 </ span > }
123+ < span id ="L66 " class ="ln "> 66 </ span > return
124+ < span id ="L67 " class ="ln "> 67 </ span > }
125+ < span id ="L68 " class ="ln "> 68 </ span >
126+ < span id ="L69 " class ="ln "> 69 </ span > < span class =" comment " > // check if some sub-command was executed and exit </ span >
127+ < span id ="L70 " class ="ln "> 70 </ span > if opts.CommandCompleted {
128+ < span id ="L71 " class ="ln "> 71 </ span > exitCode.Store(opts.ExitCode)
129+ < span id ="L72 " class ="ln "> 72 </ span > return
130+ < span id ="L73 " class ="ln "> 73 </ span > }
131+ < span id ="L74 " class ="ln "> 74 </ span >
132+ < span id ="L75 " class ="ln "> 75 </ span > logger = log.Init( opts.Logging)
133+ < span id ="L76 " class ="ln "> 76 </ span > mainCtx = log.WithLogger(mainCtx, logger )
134+ < span id ="L77 " class ="ln "> 77 </ span >
135+ < span id ="L78 " class ="ln "> 78 </ span > logger.Debugf("opts: %+v", opts)
136136< span id ="L79 " class ="ln "> 79 </ span >
137- < span id ="L80 " class ="ln "> 80 </ span > logger = log.Init(opts.Logging)
138- < span id ="L81 " class ="ln "> 81 </ span > mainCtx = log.WithLogger(mainCtx, logger)
139- < span id ="L82 " class ="ln "> 82 </ span >
140- < span id ="L83 " class ="ln "> 83 </ span > logger.Debugf("opts: %+v", opts)
141- < span id ="L84 " class ="ln "> 84 </ span >
142- < span id ="L85 " class ="ln "> 85 </ span > if err := opts.InitConfigReaders(mainCtx); err != nil {
143- < span id ="L86 " class ="ln "> 86 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
144- < span id ="L87 " class ="ln "> 87 </ span > logger.Error(err)
145- < span id ="L88 " class ="ln "> 88 </ span > return
146- < span id ="L89 " class ="ln "> 89 </ span > }
147- < span id ="L90 " class ="ln "> 90 </ span >
148- < span id ="L91 " class ="ln "> 91 </ span > if err := opts.InitSinkWriter(mainCtx); err != nil {
149- < span id ="L92 " class ="ln "> 92 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
150- < span id ="L93 " class ="ln "> 93 </ span > logger.Error(err)
151- < span id ="L94 " class ="ln "> 94 </ span > return
152- < span id ="L95 " class ="ln "> 95 </ span > }
153- < span id ="L96 " class ="ln "> 96 </ span >
154- < span id ="L97 " class ="ln "> 97 </ span > if upgrade, err := opts.NeedsSchemaUpgrade(); upgrade || err != nil {
155- < span id ="L98 " class ="ln "> 98 </ span > if upgrade {
156- < span id ="L99 " class ="ln "> 99 </ span > err = errors.Join(err, errors.New(`configuration needs upgrade, use "init --upgrade" command`))
157- < span id ="L100 " class ="ln "> 100 </ span > }
158- < span id ="L101 " class ="ln "> 101 </ span > exitCode.Store(cmdopts.ExitCodeUpgradeError)
159- < span id ="L102 " class ="ln "> 102 </ span > logger.Error(err)
160- < span id ="L103 " class ="ln "> 103 </ span > return
161- < span id ="L104 " class ="ln "> 104 </ span > }
162- < span id ="L105 " class ="ln "> 105 </ span >
163- < span id ="L106 " class ="ln "> 106 </ span > reaper := reaper.NewReaper(mainCtx, opts)
164- < span id ="L107 " class ="ln "> 107 </ span >
165- < span id ="L108 " class ="ln "> 108 </ span > if _, err = webserver.Init(mainCtx, opts.WebUI, webui.WebUIFs, opts.MetricsReaderWriter,
166- < span id ="L109 " class ="ln "> 109 </ span > opts.SourcesReaderWriter, reaper); err != nil {
167- < span id ="L110 " class ="ln "> 110 </ span > exitCode.Store(cmdopts.ExitCodeWebUIError)
168- < span id ="L111 " class ="ln "> 111 </ span > logger.Error("failed to initialize web UI: ", err)
169- < span id ="L112 " class ="ln "> 112 </ span > return
170- < span id ="L113 " class ="ln "> 113 </ span > }
171- < span id ="L114 " class ="ln "> 114 </ span >
172- < span id ="L115 " class ="ln "> 115 </ span > reaper.Reap(mainCtx)
173- < span id ="L116 " class ="ln "> 116 </ span > }
174- < span id ="L117 " class ="ln "> 117 </ span >
137+ < span id ="L80 " class ="ln "> 80 </ span > if err := opts.InitConfigReaders(mainCtx); err != nil {
138+ < span id ="L81 " class ="ln "> 81 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
139+ < span id ="L82 " class ="ln "> 82 </ span > logger.Error(err)
140+ < span id ="L83 " class ="ln "> 83 </ span > return
141+ < span id ="L84 " class ="ln "> 84 </ span > }
142+ < span id ="L85 " class ="ln "> 85 </ span >
143+ < span id ="L86 " class ="ln "> 86 </ span > if err := opts.InitSinkWriter(mainCtx); err != nil {
144+ < span id ="L87 " class ="ln "> 87 </ span > exitCode.Store(cmdopts.ExitCodeConfigError)
145+ < span id ="L88 " class ="ln "> 88 </ span > logger.Error(err)
146+ < span id ="L89 " class ="ln "> 89 </ span > return
147+ < span id ="L90 " class ="ln "> 90 </ span > }
148+ < span id ="L91 " class ="ln "> 91 </ span >
149+ < span id ="L92 " class ="ln "> 92 </ span > if upgrade, err := opts.NeedsSchemaUpgrade(); upgrade || err != nil {
150+ < span id ="L93 " class ="ln "> 93 </ span > if upgrade {
151+ < span id ="L94 " class ="ln "> 94 </ span > err = errors.Join(err, errors.New(`configuration needs upgrade, use "init --upgrade" command`))
152+ < span id ="L95 " class ="ln "> 95 </ span > }
153+ < span id ="L96 " class ="ln "> 96 </ span > exitCode.Store(cmdopts.ExitCodeUpgradeError)
154+ < span id ="L97 " class ="ln "> 97 </ span > logger.Error(err)
155+ < span id ="L98 " class ="ln "> 98 </ span > return
156+ < span id ="L99 " class ="ln "> 99 </ span > }
157+ < span id ="L100 " class ="ln "> 100 </ span >
158+ < span id ="L101 " class ="ln "> 101 </ span > reaper := reaper.NewReaper(mainCtx, opts)
159+ < span id ="L102 " class ="ln "> 102 </ span >
160+ < span id ="L103 " class ="ln "> 103 </ span > if _, err = webserver.Init(mainCtx, opts.WebUI, webui.WebUIFs, opts.MetricsReaderWriter,
161+ < span id ="L104 " class ="ln "> 104 </ span > opts.SourcesReaderWriter, reaper); err != nil {
162+ < span id ="L105 " class ="ln "> 105 </ span > exitCode.Store(cmdopts.ExitCodeWebUIError)
163+ < span id ="L106 " class ="ln "> 106 </ span > logger.Error("failed to initialize web UI: ", err)
164+ < span id ="L107 " class ="ln "> 107 </ span > return
165+ < span id ="L108 " class ="ln "> 108 </ span > }
166+ < span id ="L109 " class ="ln "> 109 </ span >
167+ < span id ="L110 " class ="ln "> 110 </ span > reaper.Reap(mainCtx)
168+ < span id ="L111 " class ="ln "> 111 </ span > }
169+ < span id ="L112 " class ="ln "> 112 </ span >
175170</ pre > < p > </ p >
176171
177172< div id ="footer ">
0 commit comments