commands: Only show Ansi escape codes if in a terminal
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 26 Oct 2018 12:32:32 +0000 (14:32 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 26 Oct 2018 12:33:44 +0000 (14:33 +0200)
commands/helpers.go
commands/helpers_others.go [deleted file]
commands/helpers_windows.go [deleted file]
commands/hugo.go

index be6edaf993a6bf5870cd5c6ae4a87021f937608a..1386e425fe64704ac395156c82bd0822137e518f 100644 (file)
@@ -23,6 +23,13 @@ import (
        "github.com/spf13/cobra"
 )
 
+const (
+       ansiEsc    = "\u001B"
+       clearLine  = "\r\033[K"
+       hideCursor = ansiEsc + "[?25l"
+       showCursor = ansiEsc + "[?25h"
+)
+
 type flagsToConfigHandler interface {
        flagsToConfig(cfg config.Provider)
 }
diff --git a/commands/helpers_others.go b/commands/helpers_others.go
deleted file mode 100644 (file)
index b6a97e2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018 The Hugo Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !windows
-
-package commands
-
-const (
-       ansiEsc    = "\u001B"
-       clearLine  = "\r\033[K"
-       hideCursor = ansiEsc + "[?25l"
-       showCursor = ansiEsc + "[?25h"
-)
diff --git a/commands/helpers_windows.go b/commands/helpers_windows.go
deleted file mode 100644 (file)
index fd02c3a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018 The Hugo Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build windows
-
-package commands
-
-const (
-       ansiEsc    = ""
-       clearLine  = ""
-       hideCursor = ""
-       showCursor = ""
-)
index 1cfbdcf7c1ff6d5aea3aae83487274b1acede4bc..ce11626eb658d1f3bedacf6beb461f4a892c5781 100644 (file)
@@ -27,6 +27,7 @@ import (
 
        "github.com/gohugoio/hugo/common/herrors"
        "github.com/gohugoio/hugo/common/loggers"
+       "github.com/gohugoio/hugo/common/terminal"
 
        "syscall"
 
@@ -264,6 +265,17 @@ func setValueFromFlag(flags *flag.FlagSet, key string, cfg config.Provider, targ
        }
 }
 
+func isTerminal() bool {
+       return terminal.IsTerminal(os.Stdout)
+
+}
+func ifTerminal(s string) string {
+       if !isTerminal() {
+               return ""
+       }
+       return s
+}
+
 func (c *commandeer) fullBuild() error {
        var (
                g         errgroup.Group
@@ -271,10 +283,12 @@ func (c *commandeer) fullBuild() error {
        )
 
        if !c.h.quiet {
-               fmt.Print(hideCursor + "Building sites … ")
-               defer func() {
-                       fmt.Print(showCursor + clearLine)
-               }()
+               fmt.Print(ifTerminal(hideCursor) + "Building sites … ")
+               if isTerminal() {
+                       defer func() {
+                               fmt.Print(showCursor + clearLine)
+                       }()
+               }
        }
 
        copyStaticFunc := func() error {