mirror of
https://github.com/ahmetb/kubectx.git
synced 2025-06-20 04:32:05 +00:00
Re-introduce DEBUG env var stack traces
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
This commit is contained in:
parent
195e6315da
commit
077d8a829d
@ -14,6 +14,9 @@ const (
|
||||
// EnvForceColor describes the "internal" environment variable to force
|
||||
// color usage to show current context in a list.
|
||||
EnvForceColor = `_KUBECTX_FORCE_COLOR`
|
||||
|
||||
// EnvDebug describes the internal environment variable for more verbose logging.
|
||||
EnvDebug = `DEBUG`
|
||||
)
|
||||
|
||||
func useColors() bool {
|
||||
|
@ -1,11 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type Op interface {
|
||||
@ -50,9 +49,9 @@ func parseArgs(argv []string) Op {
|
||||
}
|
||||
|
||||
if strings.HasPrefix(v, "-") && v != "-" {
|
||||
return UnsupportedOp{Err: errors.Errorf("unsupported option %s", v)}
|
||||
return UnsupportedOp{Err: fmt.Errorf("unsupported option '%s'", v)}
|
||||
}
|
||||
return SwitchOp{Target: argv[0]}
|
||||
}
|
||||
return UnsupportedOp{Err: errors.New("too many arguments")}
|
||||
return UnsupportedOp{Err: fmt.Errorf("too many arguments")}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func Test_parseArgs_new(t *testing.T) {
|
||||
@ -60,7 +60,10 @@ func Test_parseArgs_new(t *testing.T) {
|
||||
want: RenameOp{"a", "."}},
|
||||
{name: "unrecognized flag",
|
||||
args: []string{"-x"},
|
||||
want: UnsupportedOp{Err: errors.Errorf("unsupported option \"-x\"")}},
|
||||
want: UnsupportedOp{Err: fmt.Errorf("unsupported option \"-x\"")}},
|
||||
{name: "too many args",
|
||||
args: []string{"a", "b", "c"},
|
||||
want: UnsupportedOp{Err: fmt.Errorf("too many arguments")}},
|
||||
// TODO add more UnsupportedOp cases
|
||||
|
||||
// TODO consider these cases
|
||||
|
@ -9,18 +9,20 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
// parse command-line flags
|
||||
var op Op
|
||||
op = parseArgs(os.Args[1:])
|
||||
|
||||
op := parseArgs(os.Args[1:])
|
||||
if err := op.Run(os.Stdout, os.Stderr); err != nil {
|
||||
printError(os.Stderr, err.Error())
|
||||
os.Exit(1)
|
||||
|
||||
if _, ok := os.LookupEnv(EnvDebug); ok {
|
||||
// print stack trace in verbose mode
|
||||
fmt.Fprintf(os.Stderr, "[DEBUG] error: %+v\n", err)
|
||||
}
|
||||
defer os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func printError(w io.Writer, format string, args ...interface{}) {
|
||||
fmt.Fprintf(os.Stderr, color.RedString("error: ")+format+"\n", args...)
|
||||
fmt.Fprintf(w, color.RedString("error: ")+format+"\n", args...)
|
||||
}
|
||||
|
||||
func printWarning(w io.Writer, format string, args ...interface{}) {
|
||||
|
Loading…
Reference in New Issue
Block a user