コード例 #1
0
ファイル: dedup.go プロジェクト: uwedeportivo/romba
func Dedup(d *types.Dat, deduper Deduper) (*types.Dat, error) {
	dc := new(types.Dat)
	dc.CopyHeader(d)

	for _, g := range d.Games {
		gc := new(types.Game)
		gc.CopyHeader(g)
		for _, r := range g.Roms {
			if !r.Valid() {
				continue
			}
			seen, err := deduper.Seen(r)
			if err != nil {
				return nil, err
			}
			if !seen {
				gc.Roms = append(gc.Roms, r)
				err = deduper.Declare(r)
				if err != nil {
					return nil, err
				}
			}
		}
		if len(gc.Roms) > 0 {
			dc.Games = append(dc.Games, gc)
		}
	}

	if len(dc.Games) > 0 {
		return dc, nil
	}
	return nil, nil
}