more fancy
All checks were successful
Build and Publish / Metadata (push) Successful in 11s
Build and Publish / BuildAndDeployAmd64 (push) Successful in 1m23s
Build and Publish / BuildAndDeployArm64 (push) Successful in 4m10s

This commit is contained in:
matst80
2025-10-16 13:42:21 +02:00
parent 07a7ec5781
commit cdb0241c8a
3 changed files with 124 additions and 12 deletions

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"fmt"
"io/fs"
"net/http"
"os"
"path/filepath"
@@ -12,6 +13,7 @@ import (
"sort"
"strconv"
"strings"
"syscall"
"time"
"git.tornberg.me/go-cart-actor/pkg/actor"
@@ -52,17 +54,41 @@ func isValidFileId(name string) (uint64, bool) {
return 0, false
}
func AccessTime(info os.FileInfo) (time.Time, bool) {
switch stat := info.Sys().(type) {
case *syscall.Stat_t:
// Linux: Atim; macOS/BSD: Atimespec
// Use reflection or build tags if naming differs.
// Linux:
if stat.Atim.Sec != 0 || stat.Atim.Nsec != 0 {
return time.Unix(int64(stat.Atim.Sec), int64(stat.Atim.Nsec)), true
}
// macOS/BSD example (uncomment if needed):
// return time.Unix(int64(stat.Atimespec.Sec), int64(stat.Atimespec.Nsec)), true
}
return time.Time{}, false
}
func appendFileInfo(info fs.FileInfo, out *CartFileInfo) *CartFileInfo {
sys := info.Sys()
fmt.Printf("sys type %T", sys)
out.Size = info.Size()
out.Modified = info.ModTime()
out.Accessed, _ = AccessTime(info)
return out
}
var cartFileRe = regexp.MustCompile(`^(\d+)\.events\.log$`)
func listCartFiles(dir string) ([]CartFileInfo, error) {
func listCartFiles(dir string) ([]*CartFileInfo, error) {
entries, err := os.ReadDir(dir)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return []CartFileInfo{}, nil
return []*CartFileInfo{}, nil
}
return nil, err
}
out := make([]CartFileInfo, 0)
out := make([]*CartFileInfo, 0)
for _, e := range entries {
if e.IsDir() {
continue
@@ -77,13 +103,10 @@ func listCartFiles(dir string) ([]CartFileInfo, error) {
continue
}
info.Sys()
out = append(out, CartFileInfo{
ID: fmt.Sprintf("%d", id),
CartId: cart.CartId(id),
Size: info.Size(),
Modified: info.ModTime(),
System: info.Sys(),
})
out = append(out, appendFileInfo(info, &CartFileInfo{
ID: fmt.Sprintf("%d", id),
CartId: cart.CartId(id),
}))
}
return out, nil
}