From 03f6d8e51152b1862b2d999b79b90a088b06037f Mon Sep 17 00:00:00 2001 From: bnewbold Date: Tue, 17 Apr 2012 20:12:19 -0400 Subject: listing --- bommom.go | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 3 deletions(-) (limited to 'bommom.go') diff --git a/bommom.go b/bommom.go index 3b7c993..4b6e39d 100644 --- a/bommom.go +++ b/bommom.go @@ -41,13 +41,73 @@ func main() { switch flag.Arg(0) { default: log.Fatal("Error: unknown command: ", flag.Arg(0)) - case "load", "dump", "serve": + case "load", "serve": log.Fatal("Error: Unimplemented, sorry") case "init": log.Println("Initializing...") + initCmd() + case "dump": + log.Println("Dumping...") + dumpCmd() + case "list": + listCmd() } } +func initCmd() { + _, err := NewJSONFileBomStore(*fileStorePath) + if err != nil { + log.Fatal(err) + } +} + +func dumpCmd() { + b := makeTestBom() + b.Version = "v001" + bs := &BomStub{Name: "widget", + Owner: "common", + Description: "fancy stuff", + HeadVersion: b.Version, + IsPublicView: true, + IsPublicEdit: true} + jfbs, err := OpenJSONFileBomStore(*fileStorePath) + if err != nil { + log.Fatal(err) + } + jfbs.Persist(bs, b, "v001") +} + +func listCmd() { + jfbs, err := OpenJSONFileBomStore(*fileStorePath) + if err != nil { + log.Fatal(err) + } + var bomStubs []BomStub + if flag.NArg() > 2 { + log.Fatal("Error: too many arguments...") + } + if flag.NArg() == 2 { + name := flag.Arg(1) + if !isShortName(name) { + log.Fatal("Error: not a possible username: " + name) + } + bomStubs, err = jfbs.ListBoms(ShortName(name)) + if err != nil { + log.Fatal(err) + } + } else { + // list all boms from all names + // TODO: ERROR + bomStubs, err = jfbs.ListBoms("") + if err != nil { + log.Fatal(err) + } + } + for _, bs := range bomStubs { + fmt.Println(bs.Owner + "/" + bs.Name) + } +} + func printUsage() { fmt.Println("bommom is a tool for managing and publishing electronics BOMs") fmt.Println("") @@ -57,8 +117,9 @@ func printUsage() { fmt.Println("Commands:") fmt.Println("") fmt.Println("\tinit \t\t initialize BOM and authentication datastores") - fmt.Println("\tload [file]\t import a BOM") - fmt.Println("\tdump [name]\t dump a BOM to stdout") + fmt.Println("\tlist [user]\t\t list BOMs, optionally filtered by user") + fmt.Println("\tload \t import a BOM") + fmt.Println("\tdump \t dump a BOM to stdout") fmt.Println("\tserve\t\t serve up web interface over HTTP") fmt.Println("") fmt.Println("Extra command line options:") -- cgit v1.2.3