Merge pull request 'feat(ledger): add demo CLI for append/verify/show' (#2) from shadowmo/Cognition-OS:feature/ledger-prototype into main
Reviewed-on: #2
This commit was merged in pull request #2.
This commit is contained in:
56
cmd/ledger-demo/main.go
Normal file
56
cmd/ledger-demo/main.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user