rc := 0
for _, cmdName := range []string{
"redo",
+ "redo-affects",
"redo-always",
"redo-cleanup",
"redo-dot",
panic(err)
}
unix.Flock(int(fdLock.Fd()), unix.LOCK_UN)
- OODTgts = make(map[string]struct{})
+ OODTgts = map[string]struct{}{}
for _, tgtRaw := range bytes.Split(tgtsRaw, []byte{0}) {
t := string(tgtRaw)
if t == "" {
for _, tgt := range tgts {
fmt.Println(tgt)
}
+ case "redo-affects":
+ if tgtsWasEmpty {
+ log.Fatalln("no targets specified")
+ }
+ var tgtsKnown []string
+ tgtsKnown, err = targetsWalker([]string{Cwd})
+ if err != nil {
+ break
+ }
+ deps := map[string]map[string]struct{}{}
+ for _, tgt := range tgtsKnown {
+ collectDeps(Cwd, tgt, 0, deps, true)
+ }
+ seen := map[string]struct{}{}
+ for _, tgt := range tgts {
+ collectWholeDeps(deps[tgt], deps, seen)
+ }
+ tgts := make([]string, 0, len(seen))
+ for dep := range seen {
+ tgts = append(tgts, dep)
+ }
+ sort.Strings(tgts)
+ for _, dep := range tgts {
+ fmt.Println(dep)
+ }
case "redo-ood":
if tgtsWasEmpty {
tgts, err = targetsWalker([]string{Cwd})