From 1cd7a57573f05046df7f3a8b7b001693be47fde8 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Fri, 18 Mar 2016 16:31:12 -0400 Subject: [PATCH] check: stubbing out the entry Type's Signed-off-by: Vincent Batts --- check.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/check.go b/check.go index 4664191..7df89fa 100644 --- a/check.go +++ b/check.go @@ -1,8 +1,51 @@ package mtree +import ( + "fmt" + "os" + "path/filepath" + "sort" +) + type Result struct { } +var ErrNotAllClear = fmt.Errorf("some keyword check failed validation") + func Check(root string, dh *DirectoryHierarchy) (*Result, error) { + creator := dhCreator{DH: dh} + curDir, err := os.Getwd() + if err == nil { + defer os.Chdir(curDir) + } + + if err := os.Chdir(root); err != nil { + return nil, err + } + sort.Sort(byPos(creator.DH.Entries)) + + for _, e := range creator.DH.Entries { + switch e.Type { + case SpecialType: + if e.Name == "/set" { + creator.curSet = &e + } else if e.Name == "/unset" { + creator.curSet = nil + } + case DotDotType: + // TODO step + case RelativeType: + // TODO determine path, and check keywords + // or maybe to Chdir when type=dir? + case FullType: + info, err := os.Lstat(filepath.Join(root, e.Name)) + if err != nil { + return nil, err + } + // TODO check against keywords present + _ = info + } + } + return nil, nil }