diff options
-rw-r--r-- | bommom.go | 13 | ||||
-rw-r--r-- | core.go | 4 | ||||
-rw-r--r-- | formats.go | 17 |
3 files changed, 25 insertions, 9 deletions
@@ -247,7 +247,7 @@ func loadCmd() { } func convertCmd() { - if flag.NArg() != 3 { + if flag.NArg() != 2 && flag.NArg() != 3 { log.Fatal("Error: wrong number of arguments (expected input and output files)") } @@ -258,10 +258,21 @@ func convertCmd() { outFname := flag.Arg(2) bs, b := loadIn(inFname) + + if b == nil { + log.Fatal("null bom") + } if inFormat == "csv" && bs == nil { // TODO: from inname? if ShortName? bs = &BomStub{Name: "untitled", Owner: anonUser.name} } + + if err := bs.Validate(); err != nil { + log.Fatal("loaded bomstub not valid: " + err.Error()) + } + if err := b.Validate(); err != nil { + log.Fatal("loaded bom not valid: " + err.Error()) + } dumpOut(outFname, bs, b) } @@ -81,9 +81,7 @@ func (b *Bom) Validate() error { if !isShortName(b.Version) { return Error("version not a ShortName: \"" + b.Version + "\"") } - // TODO: nil? what is zero of Time? - nullTime := time.Time{} - if b.Created == nullTime { + if &b.Created == nil { return Error("created timestamp not defined") } return nil @@ -96,19 +96,26 @@ func DumpBomAsJSON(bs *BomStub, b *Bom, out io.Writer) { func LoadBomFromJSON(input io.Reader) (*BomStub, *Bom, error) { - bs := BomStub{} - b := Bom{} + bs := &BomStub{} + b := &Bom{} obj := map[string]interface{}{ - "bom_meta": bs, - "bom": b, + "bom_meta": &bs, + "bom": &b, } + fmt.Println(obj) + enc := json.NewDecoder(input) if err := enc.Decode(&obj); err != nil { log.Fatal(err) } - return &bs, &b, nil + if &bs == nil || &b == nil { + log.Fatal("didn't load successfully") + } + fmt.Println(bs) + fmt.Println(b) + return bs, b, nil } // --------------------- XML ----------------------- |