summaryrefslogtreecommitdiff
path: root/memex/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'memex/repo.go')
-rw-r--r--memex/repo.go25
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