gitlab.com/aquachain/aquachain@v1.17.16-rc3.0.20221018032414-e3ddf1e1c055/common/path.go (about) 1 // Copyright 2018 The aquachain Authors 2 // This file is part of the aquachain library. 3 // 4 // The aquachain library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The aquachain library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the aquachain library. If not, see <http://www.gnu.org/licenses/>. 16 17 package common 18 19 import ( 20 "fmt" 21 "os" 22 "path/filepath" 23 "runtime" 24 "strings" 25 ) 26 27 func shorten(s string, n int) string { 28 l := len(s) 29 if l < n { 30 return s 31 } 32 return s[:n] 33 } 34 35 func ShortGoVersion() string { 36 runtimeVersion := runtime.Version() 37 // example output: devel go1.20-cc1b20e8ad Sat Sep 17 02:56:51 2022 +0000 38 if strings.Contains(runtimeVersion, "devel ") { 39 runtimeVersion = strings.TrimPrefix(runtimeVersion, "devel ") 40 41 runtimeVersion = strings.Replace(runtimeVersion, "go", "godev", -1) 42 } 43 return shorten(strings.Split(runtimeVersion, "-")[0], 10) // go version 44 } 45 46 // MakeName creates a node name that follows the aquachain convention 47 // for such names. It adds the operation system name and Go runtime version 48 // the name. 49 func MakeName(name, version string) string { 50 return fmt.Sprintf("%s/v%s/%s/%s", name, version, runtime.GOOS, ShortGoVersion()) 51 } 52 53 func FileExist(filePath string) bool { 54 _, err := os.Stat(filePath) 55 if err != nil && os.IsNotExist(err) { 56 return false 57 } 58 59 return true 60 } 61 62 func AbsolutePath(Datadir string, filename string) string { 63 if filepath.IsAbs(filename) { 64 return filename 65 } 66 return filepath.Join(Datadir, filename) 67 }