path.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Author: NiuJiuRu
  2. // Email: niujiuru@qq.com
  3. package baseapp
  4. import (
  5. "fmt"
  6. "os"
  7. "os/exec"
  8. "path/filepath"
  9. )
  10. // 当前可执行文件的路径
  11. var EXEC_DIR string
  12. // 当前可执行文件的名字
  13. var EXEC_FILENAME string
  14. // 配置文件路径
  15. var CFG_DIR string
  16. // 程序日志目录
  17. var LOG_DIR string
  18. // 记录运行状态
  19. var RUN_DIR string
  20. // 变动缓存文件
  21. var VAR_DIR string
  22. // 相机图片目录
  23. var IMG_DIR string
  24. func InitPath() {
  25. file, err := exec.LookPath(os.Args[0])
  26. if err != nil {
  27. fmt.Printf("An error occurred while calling the exec.LookPath() function: %v\n", err)
  28. os.Exit(1)
  29. }
  30. path, err := filepath.Abs(file)
  31. if err != nil {
  32. fmt.Printf("An error occurred while calling the filepath.Abs() function: %v\n", err)
  33. os.Exit(1)
  34. }
  35. EXEC_DIR = filepath.Dir(path)
  36. EXEC_FILENAME = filepath.Base(path)
  37. CFG_DIR = filepath.Join(EXEC_DIR, "config")
  38. LOG_DIR = filepath.Join(EXEC_DIR, "log")
  39. RUN_DIR = filepath.Join(EXEC_DIR, "status")
  40. VAR_DIR = filepath.Join(EXEC_DIR, "var")
  41. IMG_DIR = filepath.Join(EXEC_DIR, "cam_img")
  42. for _, dir := range []string{CFG_DIR, LOG_DIR, RUN_DIR, VAR_DIR, IMG_DIR} {
  43. if err := ExistsDir(dir, true); err != nil {
  44. fmt.Printf("Failed to create the %s directory: %v\n", dir, err)
  45. os.Exit(1)
  46. }
  47. }
  48. }
  49. func ExistsDir(dir string, create bool) error {
  50. var err error
  51. _, err = os.Stat(dir)
  52. if os.IsNotExist(err) && create {
  53. err = os.MkdirAll(dir, os.ModePerm)
  54. }
  55. return err
  56. }