44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package common
 | |
| 
 | |
| // BoolFlag represents a boolean flag that tracks whether it was explicitly set
 | |
| type BoolFlag interface {
 | |
| 	// Value returns the current boolean value
 | |
| 	Value() bool
 | |
| 
 | |
| 	// WasExplicitlySet returns whether the flag was explicitly set
 | |
| 	WasExplicitlySet() bool
 | |
| 
 | |
| 	// Set sets the value and marks the flag as explicitly set
 | |
| 	Set(value bool)
 | |
| }
 | |
| 
 | |
| // boolFlag is the implementation of BoolFlag
 | |
| type boolFlag struct {
 | |
| 	value            bool
 | |
| 	wasExplicitlySet bool
 | |
| }
 | |
| 
 | |
| // NewBoolFlag creates a new BoolFlag with default values
 | |
| func NewBoolFlag(defaultValue bool) BoolFlag {
 | |
| 	return &boolFlag{
 | |
| 		value:            defaultValue,
 | |
| 		wasExplicitlySet: false,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Value returns the current boolean value
 | |
| func (bf *boolFlag) Value() bool {
 | |
| 	return bf.value
 | |
| }
 | |
| 
 | |
| // WasExplicitlySet returns whether the flag was explicitly set
 | |
| func (bf *boolFlag) WasExplicitlySet() bool {
 | |
| 	return bf.wasExplicitlySet
 | |
| }
 | |
| 
 | |
| // Set sets the value and marks the flag as explicitly set
 | |
| func (bf *boolFlag) Set(value bool) {
 | |
| 	bf.value = value
 | |
| 	bf.wasExplicitlySet = true
 | |
| }
 |