X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=tgt.go;h=3fa14a0cb142b67d403a437dd87e7f42b727c100;hb=6dce71355599d4caf8267f6f02520037480f7ba3;hp=8e454f2c94a884dc85a826e47ba570eaf705c362;hpb=e1afa1a3b0f7e4e06f636f584a47bb8cfc885e7c;p=goredo.git diff --git a/tgt.go b/tgt.go index 8e454f2..3fa14a0 100644 --- a/tgt.go +++ b/tgt.go @@ -27,11 +27,16 @@ func cwdMustRel(paths ...string) string { return mustRel(Cwd, path.Join(paths...)) } +func pathSplit(a string) (h, t string) { + h, t = path.Split(a) + if len(h) > 1 { + h = h[:len(h)-1] + } + return +} + type Tgt struct { - // a/h/t resemble zsh'es :a, :h, :t modifiers a string // absolute path - h string // head of the path, directory - t string // tail of the path, only name rel string // relative to Cwd dep string // path to dependency file } @@ -43,29 +48,22 @@ func NewTgt(tgt string) *Tgt { return t } } - t := Tgt{a: a} - t.h, t.t = path.Split(t.a) - if len(t.h) > 1 { - t.h = t.h[:len(t.h)-1] + h, t := pathSplit(a) + res := Tgt{ + a: a, + rel: mustRel(Cwd, a), + dep: path.Join(h, RedoDir, t+DepSuffix), } - t.rel = mustRel(Cwd, t.a) if TgtCache != nil { - TgtCache[a] = &t + TgtCache[a] = &res } - return &t + return &res } func (tgt *Tgt) String() string { return tgt.rel } -func (tgt *Tgt) Dep() string { - if tgt.dep == "" { - tgt.dep = path.Join(tgt.h, RedoDir, tgt.t+DepSuffix) - } - return tgt.dep -} - func (tgt *Tgt) RelTo(cwd string) string { return mustRel(cwd, tgt.a) }