(dest interface{}, promptValidation *PromptValidation)
| 619 | } |
| 620 | |
| 621 | func ReadPrompt(dest interface{}, promptValidation *PromptValidation) error { |
| 622 | var val interface{} |
| 623 | var err error |
| 624 | shouldPrintTrailingNewLine := false |
| 625 | |
| 626 | // Validate any skipped fields first, so that any errors are returned before prompting |
| 627 | if promptValidation.SkipNonEmptyFields { |
| 628 | for _, promptItemValidation := range promptValidation.PromptItemValidations { |
| 629 | v := reflect.ValueOf(dest).Elem().FieldByName(promptItemValidation.StructField) |
| 630 | if !v.IsZero() { |
| 631 | if promptItemValidation.StringValidation != nil && promptItemValidation.Parser == nil { |
| 632 | if _, err := ValidateStringProvided(v.Interface().(string), promptItemValidation.StringValidation); err != nil { |
| 633 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 634 | } |
| 635 | } else if promptItemValidation.StringPtrValidation != nil && promptItemValidation.Parser == nil { |
| 636 | if _, err := ValidateStringPtrProvided(v.Interface().(*string), promptItemValidation.StringPtrValidation); err != nil { |
| 637 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 638 | } |
| 639 | } else if promptItemValidation.BoolValidation != nil { |
| 640 | if _, err := ValidateBoolProvided(v.Interface().(bool), promptItemValidation.BoolValidation); err != nil { |
| 641 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 642 | } |
| 643 | } else if promptItemValidation.BoolPtrValidation != nil { |
| 644 | if _, err := ValidateBoolPtrProvided(v.Interface().(*bool), promptItemValidation.BoolPtrValidation); err != nil { |
| 645 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 646 | } |
| 647 | } else if promptItemValidation.IntValidation != nil { |
| 648 | if _, err := ValidateIntProvided(v.Interface().(int), promptItemValidation.IntValidation); err != nil { |
| 649 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 650 | } |
| 651 | } else if promptItemValidation.IntPtrValidation != nil { |
| 652 | if _, err := ValidateIntPtrProvided(v.Interface().(*int), promptItemValidation.IntPtrValidation); err != nil { |
| 653 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 654 | } |
| 655 | } else if promptItemValidation.Int32Validation != nil { |
| 656 | if _, err := ValidateInt32Provided(v.Interface().(int32), promptItemValidation.Int32Validation); err != nil { |
| 657 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 658 | } |
| 659 | } else if promptItemValidation.Int32PtrValidation != nil { |
| 660 | if _, err := ValidateInt32PtrProvided(v.Interface().(*int32), promptItemValidation.Int32PtrValidation); err != nil { |
| 661 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 662 | } |
| 663 | } else if promptItemValidation.Int64Validation != nil { |
| 664 | if _, err := ValidateInt64Provided(v.Interface().(int64), promptItemValidation.Int64Validation); err != nil { |
| 665 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 666 | } |
| 667 | } else if promptItemValidation.Int64PtrValidation != nil { |
| 668 | if _, err := ValidateInt64PtrProvided(v.Interface().(*int64), promptItemValidation.Int64PtrValidation); err != nil { |
| 669 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 670 | } |
| 671 | } else if promptItemValidation.Float32Validation != nil { |
| 672 | if _, err := ValidateFloat32Provided(v.Interface().(float32), promptItemValidation.Float32Validation); err != nil { |
| 673 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 674 | } |
| 675 | } else if promptItemValidation.Float32PtrValidation != nil { |
| 676 | if _, err := ValidateFloat32PtrProvided(v.Interface().(*float32), promptItemValidation.Float32PtrValidation); err != nil { |
| 677 | return errors.Wrap(err, inferPromptFieldName(reflect.TypeOf(dest), promptItemValidation.StructField)) |
| 678 | } |
nothing calls this directly
no test coverage detected