// Copyright 2016 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.// Package commands defines and implements command-line commands and flags// used by Hugo. Commands and flags are implemented using Cobra.packagecommandsimport("fmt""io/ioutil""os/signal""sort""sync/atomic""syscall""golang.org/x/sync/errgroup""log""os""path/filepath""runtime""strings""time"src"github.com/gohugoio/hugo/source""github.com/gohugoio/hugo/config""github.com/gohugoio/hugo/parser"flag"github.com/spf13/pflag""regexp""github.com/fsnotify/fsnotify""github.com/gohugoio/hugo/helpers""github.com/gohugoio/hugo/hugolib""github.com/gohugoio/hugo/livereload""github.com/gohugoio/hugo/utils""github.com/gohugoio/hugo/watcher""github.com/spf13/afero""github.com/spf13/cobra""github.com/spf13/fsync"jww"github.com/spf13/jwalterweatherman""github.com/spf13/nitro")// Hugo represents the Hugo sites to build. This variable is exported as it// is used by at least one external library (the Hugo caddy plugin). We should// provide a cleaner external API, but until then, this is it.varHugo*hugolib.HugoSitesconst(ansiEsc="\u001B"clearLine="\r\033[K"hideCursor=ansiEsc+"[?25l"showCursor=ansiEsc+"[?25h")// Reset resets Hugo ready for a new full build. This is mainly only useful// for benchmark testing etc. via the CLI commands.funcReset()error{Hugo=nilreturnnil}// commandError is an error used to signal different error situations in command handling.typecommandErrorstruct{sstringuserErrorbool}func(ccommandError)Error()string{returnc.s}func(ccommandError)isUserError()bool{returnc.userError}funcnewUserError(a