]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm/sync.go
safcm: use better variable name in hostsToSync()
[safcm/safcm.git] / cmd / safcm / sync.go
index 98b118ed821d2224bf4f7e77e0ed002b368d9df3..70aaf47e4c8f5c364247fa4fe0c05e239bb5d79b 100644 (file)
@@ -122,7 +122,8 @@ func MainSync(args []string) error {
                return fmt.Errorf("no hosts found")
        }
 
-       isTTY := term.IsTerminal(int(os.Stdout.Fd()))
+       isTTY := term.IsTerminal(int(os.Stdout.Fd())) &&
+               term.IsTerminal(int(os.Stderr.Fd()))
 
        done := make(chan bool)
        // Collect events from all hosts and print them
@@ -226,10 +227,7 @@ func MainSync(args []string) error {
 func hostsToSync(names []string, allHosts *config.Hosts,
        allGroups map[string][]string) ([]*config.Host, error) {
 
-       detectedMap := make(map[string]bool)
-       for _, x := range config.TransitivelyDetectedGroups(allGroups) {
-               detectedMap[x] = true
-       }
+       detectedMap := config.TransitivelyDetectedGroups(allGroups)
 
        const detectedErr = `
 
@@ -247,15 +245,15 @@ are only available after the hosts were contacted.
                nameMap[x] = true
        }
        nameMatched := make(map[string]bool)
-       // To detect typos we must check all given names but only want to add
-       // each match once
-       hostMatched := make(map[string]bool)
+       // To detect typos we must check all given names but one host can be
+       // matched by multiple names (e.g. two groups with overlapping hosts)
+       hostAdded := make(map[string]bool)
 
        var res []*config.Host
        for _, host := range allHosts.List {
                if nameMap[host.Name] {
                        res = append(res, host)
-                       hostMatched[host.Name] = true
+                       hostAdded[host.Name] = true
                        nameMatched[host.Name] = true
                }
 
@@ -266,9 +264,9 @@ are only available after the hosts were contacted.
                }
                for _, x := range groups {
                        if nameMap[x] {
-                               if !hostMatched[host.Name] {
+                               if !hostAdded[host.Name] {
                                        res = append(res, host)
-                                       hostMatched[host.Name] = true
+                                       hostAdded[host.Name] = true
                                }
                                nameMatched[x] = true
                        }