github.com/jstaf/onedriver@v0.14.2-0.20240420231225-f07678f9e6ef/cmd/common/common.go (about) 1 // common functions used by both binaries 2 package common 3 4 import ( 5 "errors" 6 "fmt" 7 "io/ioutil" 8 "os" 9 "regexp" 10 11 "github.com/rs/zerolog" 12 "github.com/rs/zerolog/log" 13 ) 14 15 const version = "0.14.1" 16 17 var commit string 18 19 // Version returns the current version string 20 func Version() string { 21 clen := 0 22 if len(commit) > 7 { 23 clen = 8 24 } 25 return fmt.Sprintf("v%s %s", version, commit[:clen]) 26 } 27 28 // StringToLevel converts a string to a zerolog.LogLevel that can be used with zerolog 29 func StringToLevel(input string) zerolog.Level { 30 level, err := zerolog.ParseLevel(input) 31 if err != nil { 32 log.Error().Err(err).Msg("Could not parse log level, defaulting to \"debug\"") 33 return zerolog.DebugLevel 34 } 35 return level 36 } 37 38 // LogLevels returns the available logging levels 39 func LogLevels() []string { 40 return []string{"trace", "debug", "info", "warn", "error", "fatal"} 41 } 42 43 // TemplateXDGVolumeInfo returns 44 func TemplateXDGVolumeInfo(name string) string { 45 xdgVolumeInfo := fmt.Sprintf("[Volume Info]\nName=%s\n", name) 46 if _, err := os.Stat("/usr/share/icons/onedriver/onedriver.png"); err == nil { 47 xdgVolumeInfo += "IconFile=/usr/share/icons/onedriver/onedriver.png\n" 48 } 49 return xdgVolumeInfo 50 } 51 52 // GetXDGVolumeInfoName returns the name of the drive according to whatever the 53 // user has named it. 54 func GetXDGVolumeInfoName(path string) (string, error) { 55 contents, err := ioutil.ReadFile(path) 56 if err != nil { 57 return "", err 58 } 59 regex := regexp.MustCompile("Name=(.*)") 60 name := regex.FindString(string(contents)) 61 if len(name) < 5 { 62 return "", errors.New("could not find \"Name=\" key") 63 } 64 return name[5:], nil 65 }