package logger import ( "os" "path/filepath" ) // GetDataDir возвращает стандартную директорию для данных приложения func GetDataDir() (string, error) { // Используем XDG Base Directory Specification homeDir, err := os.UserHomeDir() if err != nil { return "", err } // ~/.local/share/gpio-monitoring dataDir := filepath.Join(homeDir, ".local", "share", "gpio-monitoring") // Создаём директорию если её нет if err := os.MkdirAll(dataDir, 0755); err != nil { return "", err } return dataDir, nil } // GetLogsDir возвращает директорию для логов func GetLogsDir() (string, error) { dataDir, err := GetDataDir() if err != nil { return "", err } logsDir := filepath.Join(dataDir, "logs") if err := os.MkdirAll(logsDir, 0755); err != nil { return "", err } return logsDir, nil } // GetDataLogsDir возвращает директорию для бинарных данных func GetDataLogsDir() (string, error) { logsDir, err := GetLogsDir() if err != nil { return "", err } dataDir := filepath.Join(logsDir, "data") if err := os.MkdirAll(dataDir, 0755); err != nil { return "", err } return dataDir, nil } // GetEventLogPath возвращает путь к файлу событий func GetEventLogPath() (string, error) { logsDir, err := GetLogsDir() if err != nil { return "", err } return filepath.Join(logsDir, "events.log"), nil } // GetEventHumanLogPath возвращает путь к человеко-читаемому файлу событий func GetEventHumanLogPath() (string, error) { logsDir, err := GetLogsDir() if err != nil { return "", err } return filepath.Join(logsDir, "events_human.log"), nil } // GetGPIOLogPath возвращает путь к человеко-читаемому GPIO логу func GetGPIOLogPath() (string, error) { logsDir, err := GetLogsDir() if err != nil { return "", err } return filepath.Join(logsDir, "gpio_human.log"), nil }