moth

Monarch Of The Hill game server
git clone https://git.woozle.org/neale/moth.git

moth / pkg / transpile
Neale Pickett  ·  2020-09-16

inventory.go

 1package transpile
 2
 3import (
 4	"log"
 5	"sort"
 6	"strings"
 7
 8	"github.com/spf13/afero"
 9)
10
11// Inventory maps category names to lists of point values.
12type Inventory map[string][]int
13
14// FsInventory returns a mapping of category names to puzzle point values.
15func FsInventory(fs afero.Fs) (Inventory, error) {
16	dirEnts, err := afero.ReadDir(fs, "")
17	if err != nil {
18		log.Print(err)
19		return nil, err
20	}
21
22	inv := make(Inventory)
23	for _, ent := range dirEnts {
24		if strings.HasPrefix(ent.Name(), ".") {
25			continue
26		}
27		if ent.IsDir() {
28			name := ent.Name()
29			c := NewFsCategory(fs, name)
30			puzzles, err := c.Inventory()
31			if err != nil {
32				log.Printf("Inventory: %s: %s", name, err)
33				continue
34			}
35			sort.Ints(puzzles)
36			inv[name] = puzzles
37		}
38	}
39
40	return inv, nil
41}