mirror of
https://github.com/rclone/rclone.git
synced 2024-11-07 09:04:52 +01:00
3553cc4a5f
Before this change backend types were printing incorrectly as the name of the type, not what was defined by the Type() method. This was not working due to not calling the Type() method. However this needed to be defined on a non-pointer type due to the way the options are handled.
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package fs
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// CutoffMode describes the possible delete modes in the config
|
|
type CutoffMode byte
|
|
|
|
// MaxTransferMode constants
|
|
const (
|
|
CutoffModeHard CutoffMode = iota
|
|
CutoffModeSoft
|
|
CutoffModeCautious
|
|
CutoffModeDefault = CutoffModeHard
|
|
)
|
|
|
|
var cutoffModeToString = []string{
|
|
CutoffModeHard: "HARD",
|
|
CutoffModeSoft: "SOFT",
|
|
CutoffModeCautious: "CAUTIOUS",
|
|
}
|
|
|
|
// String turns a LogLevel into a string
|
|
func (m CutoffMode) String() string {
|
|
if m >= CutoffMode(len(cutoffModeToString)) {
|
|
return fmt.Sprintf("CutoffMode(%d)", m)
|
|
}
|
|
return cutoffModeToString[m]
|
|
}
|
|
|
|
// Set a LogLevel
|
|
func (m *CutoffMode) Set(s string) error {
|
|
for n, name := range cutoffModeToString {
|
|
if s != "" && name == strings.ToUpper(s) {
|
|
*m = CutoffMode(n)
|
|
return nil
|
|
}
|
|
}
|
|
return fmt.Errorf("unknown cutoff mode %q", s)
|
|
}
|
|
|
|
// Type of the value
|
|
func (m CutoffMode) Type() string {
|
|
return "string"
|
|
}
|
|
|
|
// UnmarshalJSON makes sure the value can be parsed as a string or integer in JSON
|
|
func (m *CutoffMode) UnmarshalJSON(in []byte) error {
|
|
return UnmarshalJSONFlag(in, m, func(i int64) error {
|
|
if i < 0 || i >= int64(len(cutoffModeToString)) {
|
|
return fmt.Errorf("out of range cutoff mode %d", i)
|
|
}
|
|
*m = (CutoffMode)(i)
|
|
return nil
|
|
})
|
|
}
|