31 lines
679 B
Go
31 lines
679 B
Go
package orchardhome
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
var ErrFailed = errors.New("failed to retrieve Orchard's home directory path")
|
|
|
|
func Path() (string, error) {
|
|
homeDir, err := os.UserHomeDir()
|
|
if err != nil {
|
|
return "", fmt.Errorf("%w: failed to retrieve current user's home directory %v",
|
|
ErrFailed, err)
|
|
}
|
|
if orchardHome := os.Getenv("ORCHARD_HOME"); orchardHome != "" {
|
|
homeDir = orchardHome
|
|
}
|
|
|
|
orchardDir := filepath.Join(homeDir, ".orchard")
|
|
|
|
if err := os.Mkdir(orchardDir, 0700); err != nil && !os.IsExist(err) {
|
|
return "", fmt.Errorf("%w: cannot create directory %s: %v",
|
|
ErrFailed, orchardDir, err)
|
|
}
|
|
|
|
return orchardDir, nil
|
|
}
|