dequoter/store.go

58 lines
1.2 KiB
Go
Raw Normal View History

2026-01-25 22:31:14 +00:00
package main
import (
"errors"
"fmt"
"os"
"path/filepath"
"github.com/kirsle/configdir"
)
const (
packageName = "dev.lmika.dequoter"
)
type Store struct {
storeDir string
currentBufferIndex int
}
func NewStore() (*Store, error) {
cfgDir := configdir.LocalConfig(packageName)
if err := os.MkdirAll(cfgDir, 0755); err != nil {
return nil, err
}
return &Store{
storeDir: cfgDir,
currentBufferIndex: 0,
}, nil
}
func (s *Store) LoadBuffer() (string, error) {
return s.loadBuffer(fmt.Sprintf("%02d", s.currentBufferIndex))
}
func (s *Store) SaveBuffer(buffer string) error {
return s.saveBuffer(fmt.Sprintf("%02d", s.currentBufferIndex), buffer)
}
func (s *Store) loadBuffer(name string) (string, error) {
bfrFilename := filepath.Join(s.storeDir, fmt.Sprintf("%s.buffer", name))
bts, err := os.ReadFile(bfrFilename)
if err != nil {
if errors.Is(err, os.ErrNotExist) {
return "", nil
}
return "", err
}
return string(bts), err
}
func (s *Store) saveBuffer(name string, buffer string) error {
bfrFilename := filepath.Join(s.storeDir, fmt.Sprintf("%s.buffer", name))
return os.WriteFile(bfrFilename, []byte(buffer), 0644)
}