refactor: better project structure (#35)

This project is starting to grow, and I've seen flaws in the initial
project structure design
I think I'll restructure the entire project directory for better
scalability and also cleaner
This commit is contained in:
VERSE
2026-07-11 16:15:05 +07:00
committed by GitHub
parent 94c8af7b1d
commit 1e04949242
52 changed files with 339 additions and 445 deletions
+68
View File
@@ -0,0 +1,68 @@
package config
import (
"os"
"path/filepath"
"time"
"github.com/BurntSushi/toml"
)
type UpdaterState struct {
LastCheckTime time.Time `toml:"last-check-time"`
SeenVersion string `toml:"seen-version"`
}
type State struct {
LastMode string `toml:"last-mode"`
Updater UpdaterState `toml:"updater"`
}
func LoadState() *State {
s := DefaultState()
path, err := StatePath()
if err != nil {
return s
}
if _, statErr := os.Stat(path); os.IsNotExist(statErr) {
return s
}
data, err := os.ReadFile(path)
if err != nil {
return s
}
if _, err := toml.Decode(string(data), s); err != nil {
return s
}
return s
}
func SaveState(s *State) error {
path, err := StatePath()
if err != nil {
return err
}
err = os.MkdirAll(filepath.Dir(path), 0755)
if err != nil {
return err
}
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
return err
}
defer file.Close()
enc := toml.NewEncoder(file)
if err := enc.Encode(s); err != nil {
return err
}
return nil
}