@@ -2,6 +2,7 @@ package flamingo
2
2
3
3
import (
4
4
"context"
5
+ "errors"
5
6
"flag"
6
7
"fmt"
7
8
"log"
@@ -109,12 +110,13 @@ func NewApplication(modules []dingo.Module, options ...ApplicationOption) (*Appl
109
110
option (app )
110
111
}
111
112
113
+ var flamingoConfig arrayFlags
114
+
112
115
app .flagset = flag .NewFlagSet ("flamingo" , flag .ContinueOnError )
113
116
dingoTraceCircular := app .flagset .Bool ("dingo-trace-circular" , false , "enable dingo circular tracing" )
114
117
flamingoConfigLog := app .flagset .Bool ("flamingo-config-log" , false , "enable flamingo config logging" )
115
118
flamingoConfigCueDebug := app .flagset .String ("flamingo-config-cue-debug" , "" , "query the flamingo cue config loader (use . for root)" )
116
119
flamingoContext := app .flagset .String ("flamingo-context" , app .defaultContext , "set flamingo execution context" )
117
- var flamingoConfig arrayFlags
118
120
app .flagset .Var (& flamingoConfig , "flamingo-config" , "add additional flamingo yaml config" )
119
121
dingoInspect := app .flagset .Bool ("dingo-inspect" , false , "inspect dingo" )
120
122
@@ -218,52 +220,54 @@ func (app *Application) Run() error {
218
220
return fmt .Errorf ("get initialized injector: %w" , err )
219
221
}
220
222
221
- i , err := injector .GetAnnotatedInstance (new (cobra.Command ), "flamingo" )
223
+ instance , err := injector .GetAnnotatedInstance (new (cobra.Command ), "flamingo" )
222
224
if err != nil {
223
225
return fmt .Errorf ("app: get flamingo cobra.Command: %w" , err )
224
226
}
225
227
226
- rootCmd := i .(* cobra.Command )
228
+ rootCmd := instance .(* cobra.Command )
227
229
rootCmd .SetArgs (app .flagset .Args ())
228
230
229
- i , err = injector .GetInstance (new (eventRouterProvider ))
231
+ instance , err = injector .GetInstance (new (eventRouterProvider ))
230
232
if err != nil {
231
233
return fmt .Errorf ("app: get eventRouterProvider: %w" , err )
232
234
}
233
- i .(eventRouterProvider )().Dispatch (context .Background (), new (flamingo.StartupEvent ))
235
+ instance .(eventRouterProvider )().Dispatch (context .Background (), new (flamingo.StartupEvent ))
234
236
235
237
return rootCmd .Execute ()
236
238
}
237
239
238
- func typeName (of reflect.Type ) string {
240
+ func typeName (target reflect.Type ) string {
239
241
var name string
240
242
241
- for of .Kind () == reflect .Ptr {
242
- of = of .Elem ()
243
+ for target .Kind () == reflect .Ptr {
244
+ target = target .Elem ()
243
245
}
244
246
245
- if of .Kind () == reflect .Slice {
247
+ if target .Kind () == reflect .Slice {
246
248
name += "[]"
247
- of = of .Elem ()
249
+ target = target .Elem ()
248
250
}
249
251
250
- if of .Kind () == reflect .Ptr {
252
+ if target .Kind () == reflect .Ptr {
251
253
name += "*"
252
- of = of .Elem ()
254
+ target = target .Elem ()
253
255
}
254
256
255
- if of .PkgPath () != "" {
256
- name += of .PkgPath () + "."
257
+ if target .PkgPath () != "" {
258
+ name += target .PkgPath () + "."
257
259
}
258
260
259
- name += of .Name ()
261
+ name += target .Name ()
260
262
261
263
return name
262
264
}
263
265
266
+ const truncMax = 25
267
+
264
268
func trunc (s string ) string {
265
- if len (s ) > 25 {
266
- return s [:25 ] + "..."
269
+ if len (s ) > truncMax {
270
+ return s [:truncMax ] + "..."
267
271
}
268
272
return s
269
273
}
@@ -297,15 +301,15 @@ func inspect(injector *dingo.Injector) {
297
301
fmt .Println ("\n MultiBindings:" )
298
302
injector .Inspect (dingo.Inspector {
299
303
InspectMultiBinding : func (of reflect.Type , index int , annotation string , to reflect.Type , provider , instance * reflect.Value , in dingo.Scope ) {
300
- //fmt.Printf("%d: ", index)
304
+ // fmt.Printf("%d: ", index)
301
305
printBinding (of , annotation , to , provider , instance , in )
302
306
},
303
307
})
304
308
305
309
fmt .Println ("\n MapBindings:" )
306
310
injector .Inspect (dingo.Inspector {
307
311
InspectMapBinding : func (of reflect.Type , key string , annotation string , to reflect.Type , provider , instance * reflect.Value , in dingo.Scope ) {
308
- //fmt.Printf("%s: ", key)
312
+ // fmt.Printf("%s: ", key)
309
313
printBinding (of , annotation , to , provider , instance , in )
310
314
},
311
315
})
@@ -341,7 +345,8 @@ func (a *servemodule) Inject(
341
345
a .eventRouter = eventRouter
342
346
a .logger = logger
343
347
a .server = & http.Server {
344
- Addr : fmt .Sprintf (":%d" , cfg .Port ),
348
+ Addr : fmt .Sprintf (":%d" , cfg .Port ),
349
+ ReadHeaderTimeout : 10 * time .Second ,
345
350
}
346
351
a .configuredSampler = configuredSampler
347
352
a .publicEndpoint = cfg .PublicEndpoint
@@ -361,26 +366,26 @@ func (a *servemodule) CueConfig() string {
361
366
return `core: serve: port: >= 0 & <= 65535 | *3322`
362
367
}
363
368
364
- func serveProvider (a * servemodule , logger flamingo.Logger ) * cobra.Command {
369
+ func serveProvider (serveModule * servemodule , logger flamingo.Logger ) * cobra.Command {
365
370
serveCmd := & cobra.Command {
366
371
Use : "serve" ,
367
372
Short : "Default serve command - starts on Port 3322" ,
368
373
Run : func (cmd * cobra.Command , args []string ) {
369
- a .server .Handler = & ochttp.Handler {IsPublicEndpoint : a .publicEndpoint , Handler : a .router .Handler (), GetStartOptions : a .configuredSampler .GetStartOptions ()}
374
+ serveModule .server .Handler = & ochttp.Handler {IsPublicEndpoint : serveModule .publicEndpoint , Handler : serveModule .router .Handler (), GetStartOptions : serveModule .configuredSampler .GetStartOptions ()}
370
375
371
- err := a .listenAndServe ()
376
+ err := serveModule .listenAndServe ()
372
377
if err != nil {
373
- if err == http .ErrServerClosed {
378
+ if errors . Is ( err , http .ErrServerClosed ) {
374
379
logger .Info (err )
375
380
} else {
376
381
logger .Fatal ("unexpected error in serving:" , err )
377
382
}
378
383
}
379
384
},
380
385
}
381
- serveCmd .Flags ().StringVarP (& a .server .Addr , "addr" , "a" , a .server .Addr , "addr on which flamingo runs" )
382
- serveCmd .Flags ().StringVarP (& a .certFile , "certFile" , "c" , "" , "certFile to enable HTTPS" )
383
- serveCmd .Flags ().StringVarP (& a .keyFile , "keyFile" , "k" , "" , "keyFile to enable HTTPS" )
386
+ serveCmd .Flags ().StringVarP (& serveModule .server .Addr , "addr" , "a" , serveModule .server .Addr , "addr on which flamingo runs" )
387
+ serveCmd .Flags ().StringVarP (& serveModule .certFile , "certFile" , "c" , "" , "certFile to enable HTTPS" )
388
+ serveCmd .Flags ().StringVarP (& serveModule .keyFile , "keyFile" , "k" , "" , "keyFile to enable HTTPS" )
384
389
385
390
return serveCmd
386
391
}
0 commit comments