X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=dot.go;h=9199f7dd0e43099c010e972911831fdf8fd715bf;hb=3f8ee87bd625a38b57a0a38e3c34bb26fe6e1b8e;hp=b8c28b75346e8d451be77cceb1a8dbb521006adf;hpb=4655c362aed45a161e0bac3a6987347bb35c3eaa;p=goredo.git diff --git a/dot.go b/dot.go index b8c28b7..9199f7d 100644 --- a/dot.go +++ b/dot.go @@ -34,15 +34,13 @@ type DotNodes struct { to string } -func dotWalker(data map[DotNodes]bool, tgtOrig string) (map[DotNodes]bool, error) { - cwd, tgt := cwdAndTgt(tgtOrig) - depPath := path.Join(cwd, RedoDir, tgt+DepSuffix) - fdDep, err := os.Open(depPath) +func dotWalker(data map[DotNodes]bool, tgt *Tgt) (map[DotNodes]bool, error) { + fdDep, err := os.Open(tgt.Dep()) if err != nil { return nil, ErrLine(err) } defer fdDep.Close() - var dep string + var dep *Tgt r := recfile.NewReader(fdDep) for { m, err := r.NextMap() @@ -54,17 +52,17 @@ func dotWalker(data map[DotNodes]bool, tgtOrig string) (map[DotNodes]bool, error } switch m["Type"] { case DepTypeIfcreate: - data[DotNodes{tgtOrig, cwdMustRel(cwd, m["Target"])}] = true + data[DotNodes{tgt.String(), NewTgt(m["Target"]).String()}] = true case DepTypeIfchange: - dep = m["Target"] - if dep == tgt { + dep = NewTgt(path.Join(tgt.h, m["Target"])) + if dep.a == tgt.a { continue } - data[DotNodes{tgtOrig, cwdMustRel(cwd, dep)}] = false - if isSrc(cwd, dep) { + data[DotNodes{tgt.String(), dep.String()}] = false + if isSrc(dep) { continue } - data, err = dotWalker(data, cwdMustRel(cwd, dep)) + data, err = dotWalker(data, dep) if err != nil { return nil, err } @@ -73,7 +71,7 @@ func dotWalker(data map[DotNodes]bool, tgtOrig string) (map[DotNodes]bool, error return data, nil } -func dotPrint(tgts []string) error { +func dotPrint(tgts []*Tgt) error { data := map[DotNodes]bool{} var err error for _, tgt := range tgts {