26 lines
744 B
Go
26 lines
744 B
Go
package tools
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
"path/filepath"
|
||
"strings"
|
||
)
|
||
|
||
// getAbsPath получает абсолютный путь с автоматической проверкой существования для файлов
|
||
func AbsPath(path string) (string, error) {
|
||
absPath, err := filepath.Abs(path)
|
||
if err != nil {
|
||
return "", fmt.Errorf("ошибка получения абсолютного пути: %v", err)
|
||
}
|
||
|
||
// Проверяем существование только для файлов (с расширением)
|
||
if strings.Contains(filepath.Base(absPath), ".") {
|
||
if _, err := os.Stat(absPath); os.IsNotExist(err) {
|
||
return "", fmt.Errorf("файл не найден: %s", absPath)
|
||
}
|
||
}
|
||
|
||
return absPath, nil
|
||
}
|