From 534faa6b6d2bb2ff962852f594152e39a84c17eb Mon Sep 17 00:00:00 2001 From: Ben Kalman Date: Fri, 15 Jul 2016 10:10:57 -0700 Subject: [PATCH] exit noms as soon as less quits, not when stdout closes (#2068) --- cmd/noms/noms_diff.go | 14 +++++++------- cmd/noms/noms_log.go | 2 +- cmd/noms/noms_show.go | 2 +- go/util/outputpager/page_output.go | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cmd/noms/noms_diff.go b/cmd/noms/noms_diff.go index 79374b028c..0d43573014 100644 --- a/cmd/noms/noms_diff.go +++ b/cmd/noms/noms_diff.go @@ -51,16 +51,16 @@ func runDiff(args []string) int { } defer db2.Close() - waitChan := outputpager.PageOutput(!outputpager.NoPager) - + waitChan := outputpager.PageOutput() w := bufio.NewWriter(os.Stdout) - diff.Diff(w, value1, value2) - fmt.Fprintf(w, "\n") - w.Flush() if waitChan != nil { - os.Stdout.Close() - <-waitChan + go func() { + <-waitChan + os.Exit(0) + }() } + + diff.Diff(w, value1, value2) return 0 } diff --git a/cmd/noms/noms_log.go b/cmd/noms/noms_log.go index c565aa3a2e..23ef0c5808 100644 --- a/cmd/noms/noms_log.go +++ b/cmd/noms/noms_log.go @@ -70,7 +70,7 @@ func runLog(args []string) int { d.CheckErrorNoUsage(fmt.Errorf("Object not found: %s", args[0])) } - waitChan := outputpager.PageOutput(!outputpager.NoPager) + waitChan := outputpager.PageOutput() origCommit, ok := value.(types.Struct) if !ok || !origCommit.Type().Equals(datas.CommitType()) { diff --git a/cmd/noms/noms_show.go b/cmd/noms/noms_show.go index 3106d47e31..8e8818d6cf 100644 --- a/cmd/noms/noms_show.go +++ b/cmd/noms/noms_show.go @@ -40,7 +40,7 @@ func runShow(args []string) int { return 0 } - waitChan := outputpager.PageOutput(!outputpager.NoPager) + waitChan := outputpager.PageOutput() w := bufio.NewWriter(os.Stdout) types.WriteEncodedValueWithTags(w, value) diff --git a/go/util/outputpager/page_output.go b/go/util/outputpager/page_output.go index 38eb964096..4a2d79df77 100644 --- a/go/util/outputpager/page_output.go +++ b/go/util/outputpager/page_output.go @@ -14,19 +14,19 @@ import ( ) var ( - NoPager bool + noPager bool flagsRegistered = false ) func RegisterOutputpagerFlags(flags *flag.FlagSet) { if !flagsRegistered { flagsRegistered = true - flags.BoolVar(&NoPager, "no-pager", false, "suppress paging functionality") + flags.BoolVar(&noPager, "no-pager", false, "suppress paging functionality") } } -func PageOutput(usePager bool) <-chan struct{} { - if !usePager || !IsStdoutTty() { +func PageOutput() <-chan struct{} { + if noPager || !IsStdoutTty() { return nil }