/commands/helpers.go
https://gitlab.com/gohugo/hugo · Go · 79 lines · 46 code · 15 blank · 18 comment · 2 complexity · 8615a80dfd3d154c1d6ba2bfa569581c MD5 · raw file
- // 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.
- // Package commands defines and implements command-line commands and flags
- // used by Hugo. Commands and flags are implemented using Cobra.
- package commands
- import (
- "fmt"
- "regexp"
- "github.com/gohugoio/hugo/config"
- "github.com/spf13/cobra"
- )
- const (
- ansiEsc = "\u001B"
- clearLine = "\r\033[K"
- hideCursor = ansiEsc + "[?25l"
- showCursor = ansiEsc + "[?25h"
- )
- type flagsToConfigHandler interface {
- flagsToConfig(cfg config.Provider)
- }
- type cmder interface {
- flagsToConfigHandler
- getCommand() *cobra.Command
- }
- // commandError is an error used to signal different error situations in command handling.
- type commandError struct {
- s string
- userError bool
- }
- func (c commandError) Error() string {
- return c.s
- }
- func (c commandError) isUserError() bool {
- return c.userError
- }
- func newUserError(a ...any) commandError {
- return commandError{s: fmt.Sprintln(a...), userError: true}
- }
- func newSystemError(a ...any) commandError {
- return commandError{s: fmt.Sprintln(a...), userError: false}
- }
- func newSystemErrorF(format string, a ...any) commandError {
- return commandError{s: fmt.Sprintf(format, a...), userError: false}
- }
- // Catch some of the obvious user errors from Cobra.
- // We don't want to show the usage message for every error.
- // The below may be to generic. Time will show.
- var userErrorRegexp = regexp.MustCompile("unknown flag")
- func isUserError(err error) bool {
- if cErr, ok := err.(commandError); ok && cErr.isUserError() {
- return true
- }
- return userErrorRegexp.MatchString(err.Error())
- }