Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
kardolus
GitHub Repository: kardolus/chatgpt-cli
Path: blob/main/internal/utils.go
3426 views
1
package internal
2
3
import (
4
"github.com/google/uuid"
5
"os"
6
"path/filepath"
7
)
8
9
const (
10
ConfigHomeEnv = "OPENAI_CONFIG_HOME"
11
DataHomeEnv = "OPENAI_DATA_HOME"
12
CacheHomeEnv = "OPENAI_CACHE_HOME"
13
DefaultConfigDir = ".chatgpt-cli"
14
DefaultDataDir = "history"
15
DefaultCacheDir = "cache"
16
SlugPostfixLength = 4
17
)
18
19
func GenerateUniqueSlug(prefix string) string {
20
guid := uuid.New()
21
return prefix + guid.String()[:SlugPostfixLength]
22
}
23
24
func GetConfigHome() (string, error) {
25
var result string
26
27
homeDir, err := os.UserHomeDir()
28
if err != nil {
29
return "", err
30
}
31
32
result = filepath.Join(homeDir, DefaultConfigDir)
33
34
if tmp := os.Getenv(ConfigHomeEnv); tmp != "" {
35
result = tmp
36
}
37
38
return result, nil
39
}
40
41
func GetDataHome() (string, error) {
42
var result string
43
44
configHome, err := GetConfigHome()
45
if err != nil {
46
return "", err
47
}
48
49
result = filepath.Join(configHome, DefaultDataDir)
50
51
if tmp := os.Getenv(DataHomeEnv); tmp != "" {
52
result = tmp
53
}
54
55
return result, nil
56
}
57
58
func GetCacheHome() (string, error) {
59
var result string
60
61
configHome, err := GetConfigHome()
62
if err != nil {
63
return "", err
64
}
65
66
result = filepath.Join(configHome, DefaultCacheDir)
67
68
if tmp := os.Getenv(CacheHomeEnv); tmp != "" {
69
result = tmp
70
}
71
72
return result, nil
73
}
74
75