mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-20 02:09:26 -05:00
87 lines
2.6 KiB
Go
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
|
|
}
|