package startup // Pre-defined queues... var ( Logger StartupQueue PostFlags StartupQueue ) type StartupQueue struct { items []func() hasRun bool } func (q *StartupQueue) Add(initFn ...func()) { if q.hasRun { panic("Added init function after startup") } for _, fn := range initFn { q.items = append(q.items, fn) } } func (q *StartupQueue) Run() { if q.hasRun { panic("Attempted to run init function twice") } q.hasRun = true for _, fn := range q.items { fn() } }