diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-08-31 13:43:02 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-09-05 11:34:14 +0000 |
commit | 1c2def630b6ee3885d8eb09ff6df39f8205c9c6e (patch) | |
tree | 711de9e0042614b43b8b5b9b04bd99a434ae5c69 /client/go/cmd | |
parent | 9747632efc45d76f1c78e8b70b2f6bf8e2d812dd (diff) |
allow indirection via script-utils
Diffstat (limited to 'client/go/cmd')
-rw-r--r-- | client/go/cmd/deploy/cmd.go | 145 | ||||
-rw-r--r-- | client/go/cmd/logfmt/cmd.go | 45 |
2 files changed, 190 insertions, 0 deletions
diff --git a/client/go/cmd/deploy/cmd.go b/client/go/cmd/deploy/cmd.go new file mode 100644 index 00000000000..f5cf554834d --- /dev/null +++ b/client/go/cmd/deploy/cmd.go @@ -0,0 +1,145 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// vespa-deploy command +// Author: arnej + +package deploy + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/vespa-engine/vespa/client/go/build" +) + +func reallySimpleHelp(cmd *cobra.Command, args []string) { + fmt.Println("Usage: vespa-deploy", cmd.Use) +} + +func NewDeployCmd() *cobra.Command { + var ( + curOptions Options + ) + cobra.EnableCommandSorting = false + cmd := &cobra.Command{ + Use: "vespa-deploy [-h] [-v] [-f] [-t] [-c] [-p] [-z] [-V] [<command>] [args]", + Short: "deploy applications to vespa config server", + Long: `Usage: vespa-deploy [-h] [-v] [-f] [-t] [-c] [-p] [-z] [-V] [<command>] [args] +Supported commands: 'upload', 'prepare', 'activate', 'fetch' and 'help' +Supported options: '-h' (help), '-v' (verbose), '-f' (force/ignore validation errors), '-t' (timeout in seconds), '-p' (config server http port) +Try 'vespa-deploy help <command>' to get more help`, + Version: build.Version, + Args: cobra.MaximumNArgs(2), + CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true}, + } + cmd.PersistentFlags().BoolVarP(&curOptions.Verbose, "verbose", "v", false, "show details") + cmd.PersistentFlags().BoolVarP(&curOptions.DryRun, "dryrun", "n", false, "dry-run") + cmd.PersistentFlags().BoolVarP(&curOptions.Force, "force", "f", false, "ignore validation errors") + cmd.PersistentFlags().BoolVarP(&curOptions.Hosted, "hosted", "H", false, "for hosted vespa") + + cmd.PersistentFlags().StringVarP(&curOptions.ServerHost, "server", "c", "", "config server hostname") + cmd.PersistentFlags().IntVarP(&curOptions.PortNumber, "port", "p", 19071, "config server http port") + cmd.PersistentFlags().IntVarP(&curOptions.Timeout, "timeout", "t", 900, "timeout in seconds") + + cmd.PersistentFlags().StringVarP(&curOptions.Tenant, "tenant", "e", "default", "which tentant") + cmd.PersistentFlags().StringVarP(&curOptions.Region, "region", "r", "default", "which region") + cmd.PersistentFlags().StringVarP(&curOptions.Environment, "environment", "E", "prod", "which environment") + cmd.PersistentFlags().StringVarP(&curOptions.Application, "application", "a", "default", "which application") + cmd.PersistentFlags().StringVarP(&curOptions.Instance, "instance", "i", "default", "which instance") + + cmd.PersistentFlags().StringVarP(&curOptions.Rotations, "rotations", "R", "", "which rotations") + cmd.PersistentFlags().StringVarP(&curOptions.VespaVersion, "vespaversion", "V", "", "which vespa version") + + cmd.PersistentFlags().MarkHidden("hosted") + cmd.PersistentFlags().MarkHidden("rotations") + cmd.PersistentFlags().MarkHidden("vespaversion") + + cmd.AddCommand(newUploadCmd(&curOptions)) + cmd.AddCommand(newPrepareCmd(&curOptions)) + cmd.AddCommand(newActivateCmd(&curOptions)) + cmd.AddCommand(newFetchCmd(&curOptions)) + + cmd.InitDefaultHelpCmd() + return cmd +} + +func newUploadCmd(opts *Options) *cobra.Command { + cmd := &cobra.Command{ + Use: "upload <application package>", + Run: func(cmd *cobra.Command, args []string) { + opts.Command = CmdUpload + if opts.Verbose { + fmt.Printf("upload %v [%v]\n", opts, args) + } + err := RunUpload(opts, args) + if err != nil { + fmt.Fprintf(os.Stderr, "%s\n", err.Error()) + os.Exit(1) + } + }, + Args: cobra.MaximumNArgs(1), + } + cmd.Flags().StringVarP(&opts.From, "from", "F", "", `where from`) + cmd.SetHelpFunc(reallySimpleHelp) + return cmd +} + +func newPrepareCmd(opts *Options) *cobra.Command { + cmd := &cobra.Command{ + Use: "prepare [<session_id> | <application package>]", + Run: func(cmd *cobra.Command, args []string) { + opts.Command = CmdPrepare + if opts.Verbose { + fmt.Printf("prepare %v [%v]\n", opts, args) + } + err := RunPrepare(opts, args) + if err != nil { + fmt.Fprintf(os.Stderr, "%s\n", err.Error()) + os.Exit(1) + } + }, + Args: cobra.MaximumNArgs(1), + } + cmd.SetHelpFunc(reallySimpleHelp) + return cmd +} + +func newActivateCmd(opts *Options) *cobra.Command { + cmd := &cobra.Command{ + Use: "activate [<session_id>]", + Run: func(cmd *cobra.Command, args []string) { + opts.Command = CmdActivate + if opts.Verbose { + fmt.Printf("activate %v [%v]\n", opts, args) + } + err := RunActivate(opts, args) + if err != nil { + fmt.Fprintf(os.Stderr, "%s\n", err.Error()) + os.Exit(1) + } + }, + Args: cobra.MaximumNArgs(1), + } + cmd.SetHelpFunc(reallySimpleHelp) + return cmd +} + +func newFetchCmd(opts *Options) *cobra.Command { + cmd := &cobra.Command{ + Use: "fetch <output directory>", + Run: func(cmd *cobra.Command, args []string) { + opts.Command = CmdFetch + if opts.Verbose { + fmt.Printf("fetch %v [%v]\n", opts, args) + } + err := RunFetch(opts, args) + if err != nil { + fmt.Fprintf(os.Stderr, "%s\n", err.Error()) + os.Exit(1) + } + }, + Args: cobra.MaximumNArgs(1), + } + cmd.SetHelpFunc(reallySimpleHelp) + return cmd +} diff --git a/client/go/cmd/logfmt/cmd.go b/client/go/cmd/logfmt/cmd.go new file mode 100644 index 00000000000..54e82844a30 --- /dev/null +++ b/client/go/cmd/logfmt/cmd.go @@ -0,0 +1,45 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// vespa-logfmt command +// Author: arnej + +package logfmt + +import ( + "github.com/spf13/cobra" + "github.com/vespa-engine/vespa/client/go/build" +) + +func NewLogfmtCmd() *cobra.Command { + var ( + curOptions Options = NewOptions() + ) + cmd := &cobra.Command{ + Use: "vespa-logfmt", + Short: "convert vespa.log to human-readable format", + Long: `vespa-logfmt takes input in the internal vespa format +and converts it to something human-readable`, + Version: build.Version, + Run: func(cmd *cobra.Command, args []string) { + RunLogfmt(&curOptions, args) + }, + } + cmd.Flags().VarP(&curOptions.ShowLevels, "level", "l", "turn levels on/off\n") + cmd.Flags().VarP(&curOptions.ShowFields, "show", "s", "turn fields shown on/off\n") + cmd.Flags().VarP(&curOptions.ComponentFilter, "component", "c", "select components by regexp") + cmd.Flags().VarP(&curOptions.MessageFilter, "message", "m", "select messages by regexp") + cmd.Flags().BoolVarP(&curOptions.OnlyInternal, "internal", "i", false, "select only internal components") + cmd.Flags().BoolVar(&curOptions.TruncateService, "truncateservice", false, "truncate service name") + cmd.Flags().BoolVar(&curOptions.TruncateService, "ts", false, "") + cmd.Flags().BoolVarP(&curOptions.FollowTail, "follow", "f", false, "follow logfile with tail -f") + cmd.Flags().BoolVarP(&curOptions.DequoteNewlines, "nldequote", "N", false, "dequote newlines embedded in message") + cmd.Flags().BoolVarP(&curOptions.DequoteNewlines, "dequotenewlines", "n", false, "dequote newlines embedded in message") + cmd.Flags().BoolVarP(&curOptions.TruncateComponent, "truncatecomponent", "t", false, "truncate component name") + cmd.Flags().BoolVar(&curOptions.TruncateComponent, "tc", false, "") + cmd.Flags().StringVarP(&curOptions.OnlyHostname, "host", "H", "", "select only one host") + cmd.Flags().StringVarP(&curOptions.OnlyPid, "pid", "p", "", "select only one process ID") + cmd.Flags().StringVarP(&curOptions.OnlyService, "service", "S", "", "select only one service") + cmd.Flags().MarkHidden("tc") + cmd.Flags().MarkHidden("ts") + cmd.Flags().MarkHidden("dequotenewlines") + return cmd +} |