From 8f8288e11c904ceed908abef791189b151901691 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Fri, 15 May 2015 13:15:19 +0900 Subject: [PATCH] Support for deleting files --- version.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/version.go b/version.go index d05b139..d7c4c28 100644 --- a/version.go +++ b/version.go @@ -36,7 +36,16 @@ import ( ) type versionMetadata struct { - Deleted []string + Deleted []string `json:"deleted"` +} + +func (this *versionMetadata) filter(base string, nodes map[string]versionedNode) { + for _, delPath := range this.Deleted { + dir, file := filepath.Split(delPath) + if dir == base { + delete(nodes, file) + } + } } type versionedNode struct { @@ -85,10 +94,13 @@ func (this *version) scanDir(path string) (map[string]versionedNode, error) { var baseNodes map[string]versionedNode if this.parent != nil { var err error + baseNodes, err = this.parent.scanDir(path) if err != nil { return nil, err } + + this.meta.filter(path, baseNodes) } ownNodes := make(map[string]versionedNode) @@ -104,6 +116,8 @@ func (this *version) scanDir(path string) (map[string]versionedNode, error) { ownNodes[name] = versionedNode{this.rebasePath(path, name), node} } } + + this.meta.filter(path, ownNodes) } if baseNodes == nil {