24 lines
420 B
Go
24 lines
420 B
Go
|
package flags
|
||
|
|
||
|
import "sync"
|
||
|
|
||
|
// Key type for storing flag instances in a context.Context.
|
||
|
type flagKey string
|
||
|
|
||
|
// Type to help flags out with only registering/processing once.
|
||
|
type common struct {
|
||
|
register sync.Once
|
||
|
process sync.Once
|
||
|
}
|
||
|
|
||
|
func (c *common) RegisterOnce(fn func()) {
|
||
|
c.register.Do(fn)
|
||
|
}
|
||
|
|
||
|
func (c *common) ProcessOnce(fn func() error) (err error) {
|
||
|
c.process.Do(func() {
|
||
|
err = fn()
|
||
|
})
|
||
|
return err
|
||
|
}
|