commands: Only show Ansi escape codes if in a terminal

This commit is contained in:
Bjørn Erik Pedersen 2018-10-26 14:32:32 +02:00
parent 78578632f5
commit df021317a9
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
4 changed files with 25 additions and 50 deletions

View file

@ -23,6 +23,13 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
const (
ansiEsc = "\u001B"
clearLine = "\r\033[K"
hideCursor = ansiEsc + "[?25l"
showCursor = ansiEsc + "[?25h"
)
type flagsToConfigHandler interface { type flagsToConfigHandler interface {
flagsToConfig(cfg config.Provider) flagsToConfig(cfg config.Provider)
} }

View file

@ -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"
)

View file

@ -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 = ""
)

View file

@ -27,6 +27,7 @@ import (
"github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/loggers"
"github.com/gohugoio/hugo/common/terminal"
"syscall" "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 { func (c *commandeer) fullBuild() error {
var ( var (
g errgroup.Group g errgroup.Group
@ -271,11 +283,13 @@ func (c *commandeer) fullBuild() error {
) )
if !c.h.quiet { if !c.h.quiet {
fmt.Print(hideCursor + "Building sites … ") fmt.Print(ifTerminal(hideCursor) + "Building sites … ")
if isTerminal() {
defer func() { defer func() {
fmt.Print(showCursor + clearLine) fmt.Print(showCursor + clearLine)
}() }()
} }
}
copyStaticFunc := func() error { copyStaticFunc := func() error {
cnt, err := c.copyStatic() cnt, err := c.copyStatic()