"path/filepath"
)
+var TgtCache = make(map[string]*Tgt)
+
func mustAbs(pth string) string {
pth, err := filepath.Abs(pth)
if err != nil {
}
func NewTgt(tgt string) *Tgt {
- t := Tgt{a: mustAbs(tgt)}
+ a := mustAbs(tgt)
+ if TgtCache != nil {
+ if t := TgtCache[a]; t != nil {
+ 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]
}
t.rel = mustRel(Cwd, t.a)
+ if TgtCache != nil {
+ TgtCache[a] = &t
+ }
return &t
}