pkg/skoop/context/ui.go (33 lines of code) (raw):

package context import ( "fmt" "strings" "github.com/spf13/pflag" "golang.org/x/exp/slices" ) type UIConfig struct { Format string Output string HTTP bool HTTPAddress string HTTPPort uint } var ( supportedFormat = []string{"d2", "svg", "json"} ) func (c *UIConfig) BindFlags(fs *pflag.FlagSet) { fs.StringVarP(&c.Format, "format", "", "", "Output format of diagnose result, support d2/svg/json. If not set, only print simple path info on console.") fs.StringVarP(&c.Output, "output", "", "", "Output file name, default is output.d2/svg/json in current work directory.") fs.BoolVarP(&c.HTTP, "http", "", false, "Enable an http server to show diagnose result.") fs.StringVarP(&c.HTTPAddress, "http-address", "", "127.0.0.1:8080", "Listen address for http server.") } func (c *UIConfig) Validate() error { if c.Format != "" && !slices.Contains(supportedFormat, c.Format) { return fmt.Errorf("unsupported output format %q, should be %s", c.Format, strings.Join(supportedFormat, ",")) } return nil } func (c *Context) UIConfig() *UIConfig { uiConfig, _ := c.Ctx.Load(uiConfigKey) return uiConfig.(*UIConfig) }