|
|
- package glog
-
- import (
- "encoding/json"
- "os"
- "path/filepath"
- "strings"
- )
-
- func GetCurrentDir() string {
- dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
- if err != nil {
- c, _ := os.Getwd()
- return c
- }
- return filepath.ToSlash(dir)
- }
-
- func GetAbsolutePath(path string) string {
- if strings.Index(path, "./") == 0 || strings.Index(path, ".\\") == 0 {
- r, _ := filepath.Abs(GetCurrentDir() + path[1:])
- return filepath.ToSlash(r)
- }
- r, _ := filepath.Abs(path)
- return filepath.ToSlash(r)
- }
-
- func GetDir(path string) string {
- if strings.Index(path, "./") == 0 || strings.Index(path, ".\\") == 0 {
- return filepath.ToSlash(filepath.Dir(GetCurrentDir() + path[1:]))
- }
- return filepath.ToSlash(filepath.Dir(path))
- }
-
- func EnsureDir(dir string) string {
- fullDir := GetAbsolutePath(dir)
- if IsExists(fullDir) {
- return fullDir
- }
-
- os.MkdirAll(fullDir, 777)
- return fullDir
- }
-
- func EnsureFilePath(filePath string) string {
- filePath = GetAbsolutePath(filePath)
- EnsureDir(GetDir(filePath))
- return filePath
- }
-
- func IsExists(path string) bool {
- _, err := os.Stat(path)
- if err != nil && os.IsNotExist(err) {
- return false
- }
- return true
- }
-
- func StructToString(obj interface{}) string {
- if s, ok := obj.(string); ok {
- return s
- }
- if s, ok := obj.(*string); ok {
- return *s
- }
- if s, ok := obj.([]byte); ok {
- n := len(s)
- if n > 0 && s[0] == '{' && s[n-1] == '}' {
- return string(s)
- }
- }
- res, err := json.MarshalIndent(obj, "", " ")
- if err != nil {
- Errorln(err)
- }
- s := string(res)
- return s
- }
|