| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // 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
- // 可选目录创建
- var OptDirs = struct {
- Cfg bool
- Run bool
- Var bool
- Img bool
- }{Cfg: true, Run: true, Var: true, Img: true}
- func SetOptDirs(cfgEnabled, runEnabled, varEnabled, imgEnabled bool) {
- OptDirs.Cfg = cfgEnabled
- OptDirs.Run = runEnabled
- OptDirs.Var = varEnabled
- OptDirs.Img = imgEnabled
- }
- 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")
- createDirs := []string{LOG_DIR}
- if OptDirs.Cfg {
- createDirs = append(createDirs, CFG_DIR)
- }
- if OptDirs.Run {
- createDirs = append(createDirs, RUN_DIR)
- }
- if OptDirs.Var {
- createDirs = append(createDirs, VAR_DIR)
- }
- if OptDirs.Img {
- createDirs = append(createDirs, IMG_DIR)
- }
- for _, dir := range createDirs {
- 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
- }
|