mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-24 18:13:17 +00:00
Upgraded from 99c19923, branch release-3.0. This required fetching or upgrading the following: * k8s.io/api to kubernetes-1.9.1 * k8s.io/apimachinery to kubernetes-1.9.1 * github.com/juju/ratelimit to 1.0.1 * github.com/spf13/pflag to 4c012f6d Also, update Scope's imports/function calls to be compatible with the new client.
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/jessevdk/go-flags"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type EditorOptions struct {
|
|
Input flags.Filename `short:"i" long:"input" description:"Input file" default:"-"`
|
|
Output flags.Filename `short:"o" long:"output" description:"Output file" default:"-"`
|
|
}
|
|
|
|
type Point struct {
|
|
X, Y int
|
|
}
|
|
|
|
func (p *Point) UnmarshalFlag(value string) error {
|
|
parts := strings.Split(value, ",")
|
|
|
|
if len(parts) != 2 {
|
|
return errors.New("expected two numbers separated by a ,")
|
|
}
|
|
|
|
x, err := strconv.ParseInt(parts[0], 10, 32)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
y, err := strconv.ParseInt(parts[1], 10, 32)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
p.X = int(x)
|
|
p.Y = int(y)
|
|
|
|
return nil
|
|
}
|
|
|
|
func (p Point) MarshalFlag() (string, error) {
|
|
return fmt.Sprintf("%d,%d", p.X, p.Y), nil
|
|
}
|
|
|
|
type Options struct {
|
|
// Example of verbosity with level
|
|
Verbose []bool `short:"v" long:"verbose" description:"Verbose output"`
|
|
|
|
// Example of optional value
|
|
User string `short:"u" long:"user" description:"User name" optional:"yes" optional-value:"pancake"`
|
|
|
|
// Example of map with multiple default values
|
|
Users map[string]string `long:"users" description:"User e-mail map" default:"system:system@example.org" default:"admin:admin@example.org"`
|
|
|
|
// Example of option group
|
|
Editor EditorOptions `group:"Editor Options"`
|
|
|
|
// Example of custom type Marshal/Unmarshal
|
|
Point Point `long:"point" description:"A x,y point" default:"1,2"`
|
|
}
|
|
|
|
var options Options
|
|
|
|
var parser = flags.NewParser(&options, flags.Default)
|
|
|
|
func main() {
|
|
if _, err := parser.Parse(); err != nil {
|
|
if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp {
|
|
os.Exit(0)
|
|
} else {
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
}
|