...
1
18
19 package main
20
21 import (
22 "encoding/gob"
23 "fmt"
24 "os"
25 )
26
27 func loadSnapshot(snapshotFileName string) (*snapshot, error) {
28 logger.Infof("opening snapshot file %s", snapshotFileName)
29 snapshotFile, err := os.Open(snapshotFileName)
30 if err != nil {
31 logger.Errorf("cannot open %s: %v", snapshotFileName, err)
32 return nil, err
33 }
34 defer snapshotFile.Close()
35
36 logger.Infof("decoding snapshot file %s", snapshotFileName)
37 s := &snapshot{}
38 decoder := gob.NewDecoder(snapshotFile)
39 if err = decoder.Decode(s); err != nil {
40 logger.Errorf("cannot decode %s: %v", snapshotFileName, err)
41 return nil, err
42 }
43
44 return s, nil
45 }
46
47 func localCommand() error {
48 if *flagSnapshot == "" {
49 return fmt.Errorf("-snapshot flag missing")
50 }
51
52 s, err := loadSnapshot(*flagSnapshot)
53 if err != nil {
54 return err
55 }
56
57 if *flagStreamStatsCatapultJSON == "" {
58 return fmt.Errorf("snapshot file specified without an action to perform")
59 }
60
61 if *flagStreamStatsCatapultJSON != "" {
62 if err = streamStatsCatapultJSON(s, *flagStreamStatsCatapultJSON); err != nil {
63 return err
64 }
65 }
66
67 return nil
68 }
69
View as plain text