move f.Command out of the factory
This commit is contained in:
		| @@ -157,7 +157,7 @@ func NewCmdAnnotate(parent string, f cmdutil.Factory, ioStreams genericclioption | |||||||
| func (o *AnnotateOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *AnnotateOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -201,7 +201,7 @@ func (o *ApplyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var err error | 	var err error | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -134,7 +134,7 @@ func (o *AutoscaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args | |||||||
| 	o.builder = f.NewBuilder() | 	o.builder = f.NewBuilder() | ||||||
| 	o.canBeAutoscaled = f.CanBeAutoscaled | 	o.canBeAutoscaled = f.CanBeAutoscaled | ||||||
| 	o.args = args | 	o.args = args | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
|  |  | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
| @@ -178,7 +178,7 @@ func (o *CreateOptions) ValidateArgs(cmd *cobra.Command, args []string) error { | |||||||
| func (o *CreateOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { | func (o *CreateOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -177,7 +177,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e | |||||||
| 	} | 	} | ||||||
| 	o.PrintObj = printer.PrintObj | 	o.PrintObj = printer.PrintObj | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -27,13 +27,13 @@ import ( | |||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/api/meta" | 	"k8s.io/apimachinery/pkg/api/meta" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/types" | 	"k8s.io/apimachinery/pkg/types" | ||||||
| 	utilerrors "k8s.io/apimachinery/pkg/util/errors" | 	utilerrors "k8s.io/apimachinery/pkg/util/errors" | ||||||
| 	"k8s.io/apimachinery/pkg/util/json" | 	"k8s.io/apimachinery/pkg/util/json" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation" | 	"k8s.io/apimachinery/pkg/util/validation" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme" |  | ||||||
| 	"k8s.io/kubernetes/pkg/kubectl/cmd/templates" | 	"k8s.io/kubernetes/pkg/kubectl/cmd/templates" | ||||||
| 	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" | 	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" | ||||||
| 	"k8s.io/kubernetes/pkg/kubectl/genericclioptions" | 	"k8s.io/kubernetes/pkg/kubectl/genericclioptions" | ||||||
| @@ -159,7 +159,7 @@ func NewCmdLabel(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr | |||||||
| func (o *LabelOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *LabelOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -134,7 +134,7 @@ func NewCmdPatch(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr | |||||||
|  |  | ||||||
| func (o *PatchOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *PatchOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -133,7 +133,7 @@ func NewCmdReplace(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobr | |||||||
| func (o *ReplaceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *ReplaceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -193,7 +193,7 @@ func addRunFlags(cmd *cobra.Command, opt *RunOptions) { | |||||||
| func (o *RunOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { | func (o *RunOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -145,7 +145,7 @@ func NewCmdScale(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr | |||||||
|  |  | ||||||
| func (o *ScaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *ScaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -129,7 +129,7 @@ func NewCmdImage(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra. | |||||||
| func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -21,9 +21,9 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
| 	"k8s.io/api/core/v1" |  | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
|  | 	"k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/types" | 	"k8s.io/apimachinery/pkg/types" | ||||||
| 	utilerrors "k8s.io/apimachinery/pkg/util/errors" | 	utilerrors "k8s.io/apimachinery/pkg/util/errors" | ||||||
| @@ -147,7 +147,7 @@ func NewCmdResources(f cmdutil.Factory, streams genericclioptions.IOStreams) *co | |||||||
| func (o *SetResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *SetResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  |  | ||||||
| 	"k8s.io/api/core/v1" | 	"k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/api/meta" | 	"k8s.io/apimachinery/pkg/api/meta" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| @@ -122,7 +123,7 @@ func NewCmdSelector(f cmdutil.Factory, streams genericclioptions.IOStreams) *cob | |||||||
| func (o *SetSelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *SetSelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -20,9 +20,9 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  |  | ||||||
|  | 	"github.com/golang/glog" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" |  | ||||||
| 	"k8s.io/api/core/v1" | 	"k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/types" | 	"k8s.io/apimachinery/pkg/types" | ||||||
| @@ -121,7 +121,7 @@ func NewCmdServiceAccount(f cmdutil.Factory, streams genericclioptions.IOStreams | |||||||
| func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | func (o *SetServiceAccountOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -109,7 +109,7 @@ type editPrinterOptions struct { | |||||||
| func (o *EditOptions) Complete(f cmdutil.Factory, args []string, cmd *cobra.Command) error { | func (o *EditOptions) Complete(f cmdutil.Factory, args []string, cmd *cobra.Command) error { | ||||||
| 	var err error | 	var err error | ||||||
|  |  | ||||||
| 	o.RecordFlags.Complete(f.Command(cmd, false)) | 	o.RecordFlags.Complete(cmd) | ||||||
| 	o.Recorder, err = o.RecordFlags.ToRecorder() | 	o.Recorder, err = o.RecordFlags.ToRecorder() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -21,8 +21,6 @@ import ( | |||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/spf13/cobra" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/api/meta" | 	"k8s.io/apimachinery/pkg/api/meta" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime/schema" | 	"k8s.io/apimachinery/pkg/runtime/schema" | ||||||
| @@ -87,10 +85,6 @@ type ClientAccessFactory interface { | |||||||
| 	// ProtocolsForObject returns the <port, protocol> mapping associated with the provided object | 	// ProtocolsForObject returns the <port, protocol> mapping associated with the provided object | ||||||
| 	ProtocolsForObject(object runtime.Object) (map[string]string, error) | 	ProtocolsForObject(object runtime.Object) (map[string]string, error) | ||||||
|  |  | ||||||
| 	// Command will stringify and return all environment arguments ie. a command run by a client |  | ||||||
| 	// using the factory. |  | ||||||
| 	Command(cmd *cobra.Command, showSecrets bool) string |  | ||||||
|  |  | ||||||
| 	// SuggestedPodTemplateResources returns a list of resource types that declare a pod template | 	// SuggestedPodTemplateResources returns a list of resource types that declare a pod template | ||||||
| 	SuggestedPodTemplateResources() []schema.GroupResource | 	SuggestedPodTemplateResources() []schema.GroupResource | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,12 +22,6 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"os" |  | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" |  | ||||||
|  |  | ||||||
| 	"github.com/spf13/cobra" |  | ||||||
| 	"github.com/spf13/pflag" |  | ||||||
|  |  | ||||||
| 	appsv1 "k8s.io/api/apps/v1" | 	appsv1 "k8s.io/api/apps/v1" | ||||||
| 	appsv1beta1 "k8s.io/api/apps/v1beta1" | 	appsv1beta1 "k8s.io/api/apps/v1beta1" | ||||||
| @@ -196,37 +190,6 @@ func (f *ring0Factory) ProtocolsForObject(object runtime.Object) (map[string]str | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| // Set showSecrets false to filter out stuff like secrets. |  | ||||||
| func (f *ring0Factory) Command(cmd *cobra.Command, showSecrets bool) string { |  | ||||||
| 	if len(os.Args) == 0 { |  | ||||||
| 		return "" |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	flags := "" |  | ||||||
| 	parseFunc := func(flag *pflag.Flag, value string) error { |  | ||||||
| 		flags = flags + " --" + flag.Name |  | ||||||
| 		if set, ok := flag.Annotations["classified"]; showSecrets || !ok || len(set) == 0 { |  | ||||||
| 			flags = flags + "=" + value |  | ||||||
| 		} else { |  | ||||||
| 			flags = flags + "=CLASSIFIED" |  | ||||||
| 		} |  | ||||||
| 		return nil |  | ||||||
| 	} |  | ||||||
| 	var err error |  | ||||||
| 	err = cmd.Flags().ParseAll(os.Args[1:], parseFunc) |  | ||||||
| 	if err != nil || !cmd.Flags().Parsed() { |  | ||||||
| 		return "" |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	args := "" |  | ||||||
| 	if arguments := cmd.Flags().Args(); len(arguments) > 0 { |  | ||||||
| 		args = " " + strings.Join(arguments, " ") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	base := filepath.Base(os.Args[0]) |  | ||||||
| 	return base + args + flags |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (f *ring0Factory) SuggestedPodTemplateResources() []schema.GroupResource { | func (f *ring0Factory) SuggestedPodTemplateResources() []schema.GroupResource { | ||||||
| 	return []schema.GroupResource{ | 	return []schema.GroupResource{ | ||||||
| 		{Resource: "replicationcontroller"}, | 		{Resource: "replicationcontroller"}, | ||||||
|   | |||||||
| @@ -17,8 +17,13 @@ limitations under the License. | |||||||
| package genericclioptions | package genericclioptions | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"os" | ||||||
|  | 	"path/filepath" | ||||||
|  | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/evanphx/json-patch" | 	"github.com/evanphx/json-patch" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  | 	"github.com/spf13/pflag" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/api/meta" | 	"k8s.io/apimachinery/pkg/api/meta" | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| @@ -60,12 +65,21 @@ func (f *RecordFlags) ToRecorder() (Recorder, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Complete is called before the command is run, but after it is invoked to finish the state of the struct before use. | // Complete is called before the command is run, but after it is invoked to finish the state of the struct before use. | ||||||
| func (f *RecordFlags) Complete(changeCause string) error { | func (f *RecordFlags) Complete(cmd *cobra.Command) error { | ||||||
| 	if f == nil { | 	if f == nil { | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	f.changeCause = changeCause | 	f.changeCause = parseCommandArguments(cmd) | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (f *RecordFlags) CompleteWithChangeCause(cause string) error { | ||||||
|  | 	if f == nil { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	f.changeCause = cause | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -150,3 +164,36 @@ func (r *ChangeCauseRecorder) MakeRecordMergePatch(obj runtime.Object) ([]byte, | |||||||
|  |  | ||||||
| 	return jsonpatch.CreateMergePatch(oldData, newData) | 	return jsonpatch.CreateMergePatch(oldData, newData) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // parseCommandArguments will stringify and return all environment arguments ie. a command run by a client | ||||||
|  | // using the factory. | ||||||
|  | // Set showSecrets false to filter out stuff like secrets. | ||||||
|  | func parseCommandArguments(cmd *cobra.Command) string { | ||||||
|  | 	if len(os.Args) == 0 { | ||||||
|  | 		return "" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	flags := "" | ||||||
|  | 	parseFunc := func(flag *pflag.Flag, value string) error { | ||||||
|  | 		flags = flags + " --" + flag.Name | ||||||
|  | 		if set, ok := flag.Annotations["classified"]; !ok || len(set) == 0 { | ||||||
|  | 			flags = flags + "=" + value | ||||||
|  | 		} else { | ||||||
|  | 			flags = flags + "=CLASSIFIED" | ||||||
|  | 		} | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	var err error | ||||||
|  | 	err = cmd.Flags().ParseAll(os.Args[1:], parseFunc) | ||||||
|  | 	if err != nil || !cmd.Flags().Parsed() { | ||||||
|  | 		return "" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	args := "" | ||||||
|  | 	if arguments := cmd.Flags().Args(); len(arguments) > 0 { | ||||||
|  | 		args = " " + strings.Join(arguments, " ") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	base := filepath.Base(os.Args[0]) | ||||||
|  | 	return base + args + flags | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 juanvallejo
					juanvallejo