blob: e54e8e1df53a8f1eea51ecbbaf19166a18e02f86 [file] [log] [blame]
giolekva6d464592020-05-13 20:12:18 +04001package appmanager
2
3import (
4 "encoding/gob"
5 "os"
6)
7
8type App struct {
9 Namespace string
10 Triggers *Triggers
11}
12
13// TODO(giolekva): add interface
14type Manager struct {
15 Apps map[string]App
16}
17
18func NewEmptyManager() *Manager {
19 return &Manager{make(map[string]App)}
20}
21
22func LoadManagerStateFromFile(path string) (*Manager, error) {
23 f, err := os.Open(path)
24 if err != nil {
25 if os.IsNotExist(err) {
26 return NewEmptyManager(), nil
27 }
28 return nil, err
29 }
30 defer f.Close()
31 dec := gob.NewDecoder(f)
32 var m Manager
33 if err := dec.Decode(&m); err != nil {
34 return nil, err
35 }
36 return &m, nil
37}
38
39func StoreManagerStateToFile(m *Manager, path string) error {
40 f, err := os.Create(path)
41 if err != nil {
42 return err
43 }
44 defer f.Close()
45 enc := gob.NewEncoder(f)
46 if err := enc.Encode(*m); err != nil {
47 return err
48 }
49 return nil
50}