You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/cmd/wrapper/deprecation_wrapper.go

42 lines
1000 B

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package wrapper
import (
"fmt"
"github.com/mitchellh/cli"
)
// DeprecationWrapper can be used to mark a command as deprecated.
type DeprecationWrapper struct {
WrappableCommand
old string
new string
}
// WrapForDeprecation returns a cli.CommandFactory that will print a deprecation warning when invoked.
func WrapForDeprecation(c func() WrappableCommand, old, new string) cli.CommandFactory {
return func() (cli.Command, error) {
return &DeprecationWrapper{
WrappableCommand: c(),
old: old,
new: new,
}, nil
}
}
// Run prints a deprecation warning and then runs the wrapped command.
func (w *DeprecationWrapper) Run(args []string) int {
w.WrappableCommand.BaseCommand().UI.Warn(
fmt.Sprintf(
"The '%s' command is deprecated and will be removed in a future release. Please use the '%s' command instead.",
w.old,
w.new,
),
)
return w.WrappableCommand.Run(args)
}