diff options
Diffstat (limited to 'memex/repo.go')
| -rw-r--r-- | memex/repo.go | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/memex/repo.go b/memex/repo.go index b2bd174..2321a50 100644 --- a/memex/repo.go +++ b/memex/repo.go @@ -48,14 +48,23 @@ func (l *RepoLock) Unlock() { } func AllRefs(arch string) []string { - fs, err := ioutil.ReadDir(path.Join(arch, "memex/refs")) - if err != nil { - panic(err) - } - refs := make([]string, 0, len(fs)) - for _, f := range fs { - if !f.IsDir() { - refs = append(refs, f.Name()) + refsdir := path.Join(arch, "memex/refs") + refs := []string{} + dirs := []string{"."} + for len(dirs) != 0 { + dir := dirs[0] + dirs = dirs[1:] + fs, err := ioutil.ReadDir(path.Join(refsdir, dir)) + if err != nil { + panic(err) + } + for _, f := range fs { + name := path.Join(dir, f.Name()) + if !f.IsDir() { + refs = append(refs, name) + } else { + dirs = append(dirs, name) + } } } return refs |
