lottsa stuff

This commit is contained in:
2025-01-19 20:17:57 -06:00
parent 88ecb1bc24
commit 2be7b117ea
8 changed files with 424 additions and 0 deletions

98
cacheFs/cacheFs.go Normal file
View File

@@ -0,0 +1,98 @@
package cachefs
import (
"os"
"time"
"github.com/spf13/afero"
)
// ensure CacheFs implements afero.Fs.
var _ afero.Fs = &CacheFs{}
// CacheStatus represents the status of a file in the cache.
type CacheStatus int
const (
// CacheHit indicates that the requested file was found in the cache.
CacheHit CacheStatus = iota
// CacheMiss indicates that the requested file was not found in the cache.
CacheMiss
)
type CacheFs struct {
// source filesystem
source afero.Fs
// cache filesystem
cache afero.Fs
}
func NewCacheFs(source, cache afero.Fs) *CacheFs {
return &CacheFs{
source: source,
cache: cache,
}
}
// Create implements the Create method of afero.Fs, ensuring we don't exceed storage limits.
func (cfs *CacheFs) Create(name string) (afero.File, error) {
return cfs.source.Create(name)
}
func (cfs *CacheFs) Mkdir(name string, perm os.FileMode) error {
return cfs.source.Mkdir(name, perm)
}
func (cfs *CacheFs) MkdirAll(path string, perm os.FileMode) error {
return cfs.source.MkdirAll(path, perm)
}
func (cfs *CacheFs) Open(name string) (afero.File, error) {
return cfs.source.Open(name)
}
func (cfs *CacheFs) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
return cfs.source.OpenFile(name, flag, perm)
}
func (cfs *CacheFs) Remove(name string) error {
return cfs.source.Remove(name)
}
func (cfs *CacheFs) RemoveAll(path string) error {
return cfs.source.RemoveAll(path)
}
func (cfs *CacheFs) Rename(oldname, newname string) error {
return cfs.source.Rename(oldname, newname)
}
func (cfs *CacheFs) Stat(name string) (os.FileInfo, error) {
return cfs.source.Stat(name)
}
func (cfs *CacheFs) Name() string {
return "CacheFS"
}
func (cfs *CacheFs) Chmod(name string, mode os.FileMode) error {
return cfs.Chmod(name, mode)
}
func (cfs *CacheFs) Chown(name string, uid, gid int) error {
return cfs.source.Chown(name, uid, gid)
}
func (cfs *CacheFs) Chtimes(name string, atime time.Time, mtime time.Time) error {
return cfs.source.Chtimes(name, atime, mtime)
}
// ensure CacheFile implements afero.File.
var _ afero.File = &CacheFile{}
// CacheFile wraps an afero.File to manage space usage on write operations.
type CacheFile struct {
afero.File
}