X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=do.go;h=360cc29b0e99fa51e306588b3e8024133a87f10d;hb=1bd954801cf4a6f51ac46e77fe89e4614d934521;hp=e120680fa05599c80b8c0dcc3d8ffc844886a2e8;hpb=634ee31ae35a2eaac517e0ffa1b7caede4b27ac5;p=goredo.git diff --git a/do.go b/do.go index e120680..360cc29 100644 --- a/do.go +++ b/do.go @@ -49,6 +49,7 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { if exists { return doFile, 0, nil } + doFileOrig := doFile levels := []string{} extsOrig := strings.Split(tgt, ".")[1:] dirAbsPrev := "" @@ -59,24 +60,26 @@ func findDo(fdDep *os.File, cwd, tgt string) (string, int, error) { doFile = strings.Join(append( []string{"default"}, append(exts, "do")..., ), ".") - pth := path.Join(updir, doFile) - exists, err = existsDo(fdDep, cwd, pth) + if len(levels) > 0 || doFile != doFileOrig { + exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) + if err != nil { + return "", 0, err + } + if exists { + return doFile, len(levels), nil + } + } + exts = exts[1:] + } + doFile = "default.do" + if len(levels) > 0 || doFile != doFileOrig { + exists, err = existsDo(fdDep, cwd, path.Join(updir, doFile)) if err != nil { return "", 0, err } if exists { return doFile, len(levels), nil } - exts = exts[1:] - } - doFile = "default.do" - pth := path.Join(updir, doFile) - exists, err = existsDo(fdDep, cwd, pth) - if err != nil { - return "", 0, err - } - if exists { - return pth, len(levels), nil } levels = append(levels, "..") dirAbs, err := filepath.Abs(updir)