path.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. // 可选目录创建
  25. var OptDirs = struct {
  26. Cfg bool
  27. Run bool
  28. Var bool
  29. Img bool
  30. }{Cfg: true, Run: true, Var: true, Img: true}
  31. func SetOptDirs(cfgEnabled, runEnabled, varEnabled, imgEnabled bool) {
  32. OptDirs.Cfg = cfgEnabled
  33. OptDirs.Run = runEnabled
  34. OptDirs.Var = varEnabled
  35. OptDirs.Img = imgEnabled
  36. }
  37. func InitPath() {
  38. file, err := exec.LookPath(os.Args[0])
  39. if err != nil {
  40. fmt.Printf("An error occurred while calling the exec.LookPath() function: %v\n", err)
  41. os.Exit(1)
  42. }
  43. path, err := filepath.Abs(file)
  44. if err != nil {
  45. fmt.Printf("An error occurred while calling the filepath.Abs() function: %v\n", err)
  46. os.Exit(1)
  47. }
  48. EXEC_DIR = filepath.Dir(path)
  49. EXEC_FILENAME = filepath.Base(path)
  50. CFG_DIR = filepath.Join(EXEC_DIR, "config")
  51. LOG_DIR = filepath.Join(EXEC_DIR, "log")
  52. RUN_DIR = filepath.Join(EXEC_DIR, "status")
  53. VAR_DIR = filepath.Join(EXEC_DIR, "var")
  54. IMG_DIR = filepath.Join(EXEC_DIR, "cam_img")
  55. createDirs := []string{LOG_DIR}
  56. if OptDirs.Cfg {
  57. createDirs = append(createDirs, CFG_DIR)
  58. }
  59. if OptDirs.Run {
  60. createDirs = append(createDirs, RUN_DIR)
  61. }
  62. if OptDirs.Var {
  63. createDirs = append(createDirs, VAR_DIR)
  64. }
  65. if OptDirs.Img {
  66. createDirs = append(createDirs, IMG_DIR)
  67. }
  68. for _, dir := range createDirs {
  69. if err := ExistsDir(dir, true); err != nil {
  70. fmt.Printf("Failed to create the %s directory: %v\n", dir, err)
  71. os.Exit(1)
  72. }
  73. }
  74. }
  75. func ExistsDir(dir string, create bool) error {
  76. var err error
  77. _, err = os.Stat(dir)
  78. if os.IsNotExist(err) && create {
  79. err = os.MkdirAll(dir, os.ModePerm)
  80. }
  81. return err
  82. }