github.com/mutagen-io/mutagen@v0.18.0-rc1/pkg/synchronization/stage_mode.go (about)

     1  package synchronization
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  // IsDefault indicates whether or not the staging mode is
     8  // StageMode_StageModeDefault.
     9  func (m StageMode) IsDefault() bool {
    10  	return m == StageMode_StageModeDefault
    11  }
    12  
    13  // MarshalText implements encoding.TextMarshaler.MarshalText.
    14  func (m StageMode) MarshalText() ([]byte, error) {
    15  	var result string
    16  	switch m {
    17  	case StageMode_StageModeDefault:
    18  	case StageMode_StageModeMutagen:
    19  		result = "mutagen"
    20  	case StageMode_StageModeNeighboring:
    21  		result = "neighboring"
    22  	case StageMode_StageModeInternal:
    23  		result = "internal"
    24  	default:
    25  		result = "unknown"
    26  	}
    27  	return []byte(result), nil
    28  }
    29  
    30  // UnmarshalText implements encoding.TextUnmarshaler.UnmarshalText.
    31  func (m *StageMode) UnmarshalText(textBytes []byte) error {
    32  	// Convert the bytes to a string.
    33  	text := string(textBytes)
    34  
    35  	// Convert to a staging mode.
    36  	switch text {
    37  	case "mutagen":
    38  		*m = StageMode_StageModeMutagen
    39  	case "neighboring":
    40  		*m = StageMode_StageModeNeighboring
    41  	case "internal":
    42  		*m = StageMode_StageModeInternal
    43  	default:
    44  		return fmt.Errorf("unknown staging mode specification: %s", text)
    45  	}
    46  
    47  	// Success.
    48  	return nil
    49  }
    50  
    51  // Supported indicates whether or not a particular staging mode is a valid,
    52  // non-default value.
    53  func (m StageMode) Supported() bool {
    54  	switch m {
    55  	case StageMode_StageModeMutagen:
    56  		return true
    57  	case StageMode_StageModeNeighboring:
    58  		return true
    59  	case StageMode_StageModeInternal:
    60  		return true
    61  	default:
    62  		return false
    63  	}
    64  }
    65  
    66  // Description returns a human-readable description of a staging mode.
    67  func (m StageMode) Description() string {
    68  	switch m {
    69  	case StageMode_StageModeDefault:
    70  		return "Default"
    71  	case StageMode_StageModeMutagen:
    72  		return "Mutagen Data Directory"
    73  	case StageMode_StageModeNeighboring:
    74  		return "Neighboring"
    75  	case StageMode_StageModeInternal:
    76  		return "Internal"
    77  	default:
    78  		return "Unknown"
    79  	}
    80  }