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 }