42 lines
1001 B
Go
42 lines
1001 B
Go
// Copyright IBM Corp. 2020, 2026
|
|
// 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)
|
|
}
|