Files
opentf/internal/command/arguments/view.go
2025-05-09 14:01:32 +03:00

87 lines
2.6 KiB
Go

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package arguments
import (
"strings"
"github.com/opentofu/opentofu/internal/tofu"
)
// View represents the global command-line arguments which configure the view.
type View struct {
// NoColor is used to disable the use of terminal color codes in all
// output.
NoColor bool
// CompactWarnings is used to coalesce duplicate warnings, to reduce the
// level of noise when multiple instances of the same warning are raised
// for a configuration.
CompactWarnings bool
ConsolidateWarnings bool
ConsolidateErrors bool
// Concise is used to reduce the level of noise in the output and display
// only the important details.
Concise bool
// ModuleDeprecationWarnLvl is used to filter out deprecation warnings for outputs and variables as requested by the user.
ModuleDeprecationWarnLvl tofu.DeprecationWarningLevel
// ShowSensitive is used to display the value of variables marked as sensitive.
ShowSensitive bool
}
// ParseView processes CLI arguments, returning a View value and a
// possibly-modified slice of arguments. If any of the supported flags are
// found, they will be removed from the slice.
func ParseView(args []string) (*View, []string) {
common := &View{
ConsolidateWarnings: true,
}
// Keep track of the length of the returned slice. When we find an
// argument we support, "i" will not be incremented.
i := 0
for _, v := range args {
if prefix := "-deprecation=module:"; strings.HasPrefix(v, prefix) {
common.ModuleDeprecationWarnLvl = tofu.ParseDeprecatedWarningLevel(strings.ReplaceAll(v, prefix, ""))
continue // continue to ensure that the counter is not incremented
}
switch v {
case "-no-color":
common.NoColor = true
case "-compact-warnings":
common.CompactWarnings = true
case "-consolidate-warnings":
common.ConsolidateWarnings = true
case "-consolidate-warnings=true":
common.ConsolidateWarnings = true
case "-consolidate-warnings=false":
common.ConsolidateWarnings = false
case "-consolidate-errors":
common.ConsolidateErrors = true
case "-consolidate-errors=true":
common.ConsolidateErrors = true
case "-consolidate-errors=false":
common.ConsolidateErrors = false
case "-concise":
common.Concise = true
default:
// Unsupported argument: move left to the current position, and
// increment the index.
args[i] = v
i++
}
}
// Reduce the slice to the number of unsupported arguments. Any remaining
// to the right of "i" have already been moved left.
args = args[:i]
return common, args
}