// Complete verifies command line arguments and loads data from the command environment
func (app *App) Complete(clientConfig clientcmd.ClientConfig) error {
	p := app.ExecOptions
	// Let kubectl exec follow rules for `--`, see #13004 issue
	if len(p.PodName) == 0 {
		return fmt.Errorf("POD is required for exec")
	}
	if len(p.Command) < 1 {
		return fmt.Errorf("COMMAND is required for exec")
	}
	if clientConfig == nil {
		return fmt.Errorf("kubeconfig is required for exec")
	}

	namespace, _, err := clientConfig.Namespace() //f.DefaultNamespace()
	if err != nil {
		return err
	}
	p.Namespace = namespace

	config, err := clientConfig.ClientConfig() //f.ClientConfig()
	if err != nil {
		return err
	}
	p.Config = config

	client, err := kclient.New(config) //f.Client()
	if err != nil {
		return err
	}
	p.Client = client

	return nil
}