diff --git a/main.go b/main.go index d8610fd..d8ad8be 100644 --- a/main.go +++ b/main.go @@ -44,7 +44,6 @@ func main() { text, _ := reader.ReadString('\n') // convert CRLF to LF text = strings.Replace(text, "\n", "", -1) - fmt.Println(text) if strings.Compare("QUIT", strings.ToUpper(text)) == 0 || strings.Compare("\\Q", strings.ToUpper(text)) == 0 { fmt.Println("\nBye o/") @@ -64,6 +63,7 @@ DEL [path] - remove property/object/list (no confirmation) SAVE [path] [value] - set value to property CREATE [path] - create list/object in path (parent path should exist) ADD [path] - add abcex indexed object to list. Will return index +INFO [path] - get all info about property/object/list HELP - will print this help QUIT - exit the shell @@ -71,7 +71,7 @@ Last used path can be accessed by _ Last returned index (after ADD command) can be accessed by $ Short commands can be as: -KEYS(\K), GET(\G), INC(\I), DEC(\D), NOW(\N), DEL(\R), SAVE(\S), CREATE(\C), ADD(\A), HELP(\H), QUIT(\Q) +KEYS(\K), GET(\G), INC(\I), DEC(\D), NOW(\N), DEL(\R), SAVE(\S), CREATE(\C), ADD(\A), INFO(\?), HELP(\H), QUIT(\Q) `) continue } @@ -99,6 +99,35 @@ func ExecuteCommand(db zordfsdb.DB, commands string) error { fmt.Println("") break + case "INFO": + case "\\?": + if len(parts) == 1 || len(parts[1]) == 0 { + return fmt.Errorf("err format: INFO [path]\n") + } + + node, ok := db.GetNode(parts[1]) + if !ok { + fmt.Println("No path found.") + fmt.Println("") + } else { + fmt.Printf("{%s} INFO\n-----------------\n", parts[1]) + ntype := "property" + if node.List { + ntype = "list" + } else if node.Object { + ntype = "object" + } + fmt.Println("type:", ntype) + if ntype == "property" { + fmt.Println("value:", node.Value) + } else { + fmt.Println("keys:", db.Keys(parts[1])) + } + + fmt.Println("") + } + break + case "GET": case "\\G": if len(parts) == 1 || len(parts[1]) == 0 {