57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"shadowmo/Cognition-OS/runtime/ledger"
|
|
)
|
|
|
|
func main() {
|
|
path := flag.String("file", "ledger-demo.jsonl", "path to ledger file")
|
|
op := flag.String("op", "append", "operation: append|verify|show")
|
|
flag.Parse()
|
|
|
|
l, err := ledger.Open(*path)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "open error:", err)
|
|
os.Exit(1)
|
|
}
|
|
defer l.Close()
|
|
|
|
switch *op {
|
|
case "append":
|
|
payload := map[string]interface{}{
|
|
"msg": fmt.Sprintf("demo event at %s", time.Now().Format(time.RFC3339)),
|
|
}
|
|
h, err := l.Append("demo_event", payload)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "append error:", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println("appended hash:", h)
|
|
case "verify":
|
|
if err := l.Verify(); err != nil {
|
|
fmt.Fprintln(os.Stderr, "verify failed:", err)
|
|
os.Exit(2)
|
|
}
|
|
fmt.Println("ledger verified ok")
|
|
case "show":
|
|
f, err := os.Open(*path)
|
|
if err != nil { fmt.Fprintln(os.Stderr, "open:", err); os.Exit(1) }
|
|
defer f.Close()
|
|
dec := json.NewDecoder(f)
|
|
for {
|
|
var e map[string]interface{}
|
|
if err := dec.Decode(&e); err != nil { break }
|
|
b, _ := json.MarshalIndent(e, "", " ")
|
|
fmt.Println(string(b))
|
|
}
|
|
default:
|
|
fmt.Fprintln(os.Stderr, "unknown op")
|
|
}
|
|
}
|