-
Notifications
You must be signed in to change notification settings - Fork 0
/
sessions.go
96 lines (77 loc) · 2.19 KB
/
sessions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package data
import (
"log"
"os"
"path/filepath"
"sort"
"strings"
"time"
"github.com/anthonydroberts/gologger/state"
)
func CreateSession(sessionName string) {
sName := strings.ToLower(sessionName) + "/"
errMkSession := os.Mkdir(filepath.Join(state.Glog.GologgerHome, "sessions/", sName), 0755)
errMkData := os.Mkdir(filepath.Join(state.Glog.GologgerHome, "sessions/", sName, "data/"), 0755)
if errMkSession != nil || errMkData != nil {
log.Fatal("Failed to create a Gologger session")
}
}
func SessionExists(sessionName string) bool {
if _, err := os.Stat(filepath.Join(state.Glog.GologgerHome, "sessions/", sessionName)); os.IsNotExist(err) {
return false
}
return true
}
func GetSessions() []string {
items, err := os.ReadDir(filepath.Join(state.Glog.GologgerHome, "sessions/"))
if err != nil {
log.Fatal("Failed to read sessions directory")
}
var sessions []string
for _, i := range items {
if i.IsDir() {
sessions = append(sessions, i.Name())
}
}
return sessions
}
func GetSessionLastModifiedTime(sessionName string) time.Time {
sessionDir, err := os.Open(filepath.Join(state.Glog.GologgerHome, "sessions/", sessionName))
if err != nil {
log.Fatal(err)
}
stat, err := sessionDir.Stat()
if err != nil {
log.Fatal(err)
}
return stat.ModTime()
}
func GetSessionEntryPaths(sessionName string) []string {
items, err := os.ReadDir(filepath.Join(state.Glog.GologgerHome, "sessions/", sessionName))
if err != nil {
log.Fatal("Failed to read sessions directory")
}
var entries []string
for _, i := range items {
if !i.IsDir() {
entries = append(entries, filepath.Join(filepath.Join(state.Glog.GologgerHome, "sessions/", sessionName), i.Name()))
}
}
sort.SliceStable(entries, func(i, j int) bool {
return entries[i] > entries[j]
})
return entries
}
func UpdateActiveSession(sessionName string) {
state.UpdateConfigActiveSession(sessionName)
}
func DeleteSession(sessionName string) {
err := os.RemoveAll(filepath.Join(state.Glog.GologgerHome, "sessions/", sessionName))
if err != nil {
log.Fatalf("Failed to remove session %s: %s\n", sessionName, err)
}
}
func DeleteEntries(sessionName string) {
DeleteSession(sessionName)
CreateSession(sessionName)
}