github.com/vmware/govmomi@v0.51.0/cli/flags/common.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package flags 6 7 import "sync" 8 9 // Key type for storing flag instances in a context.Context. 10 type flagKey string 11 12 // Type to help flags out with only registering/processing once. 13 type common struct { 14 register sync.Once 15 process sync.Once 16 } 17 18 func (c *common) RegisterOnce(fn func()) { 19 c.register.Do(fn) 20 } 21 22 func (c *common) ProcessOnce(fn func() error) (err error) { 23 c.process.Do(func() { 24 err = fn() 25 }) 26 return err 27 }