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  }