// Author: NiuJiuRu // Email: niujiuru@qq.com package baseapp import ( "fmt" "os" "os/exec" "path/filepath" ) // 当前可执行文件的路径 var EXEC_DIR string // 当前可执行文件的名字 var EXEC_FILENAME string // 配置文件路径 var CFG_DIR string // 程序日志目录 var LOG_DIR string // 记录运行状态 var RUN_DIR string // 变动缓存文件 var VAR_DIR string // 相机图片目录 var IMG_DIR string func InitPath() { file, err := exec.LookPath(os.Args[0]) if err != nil { fmt.Printf("An error occurred while calling the exec.LookPath() function: %v\n", err) os.Exit(1) } path, err := filepath.Abs(file) if err != nil { fmt.Printf("An error occurred while calling the filepath.Abs() function: %v\n", err) os.Exit(1) } EXEC_DIR = filepath.Dir(path) EXEC_FILENAME = filepath.Base(path) CFG_DIR = filepath.Join(EXEC_DIR, "config") LOG_DIR = filepath.Join(EXEC_DIR, "log") RUN_DIR = filepath.Join(EXEC_DIR, "status") VAR_DIR = filepath.Join(EXEC_DIR, "var") IMG_DIR = filepath.Join(EXEC_DIR, "cam_img") for _, dir := range []string{CFG_DIR, LOG_DIR, RUN_DIR, VAR_DIR, IMG_DIR} { if err := ExistsDir(dir, true); err != nil { fmt.Printf("Failed to create the %s directory: %v\n", dir, err) os.Exit(1) } } } func ExistsDir(dir string, create bool) error { var err error _, err = os.Stat(dir) if os.IsNotExist(err) && create { err = os.MkdirAll(dir, os.ModePerm) } return err }