(versions []*management.ActionVersion)
| 754 | } |
| 755 | |
| 756 | func pickTwoVersions(versions []*management.ActionVersion) (int, int, error) { |
| 757 | if len(versions) < 2 { |
| 758 | return 0, 0, fmt.Errorf("need at least 2 versions to compare, found only %d version. Create more versions to enable comparison", len(versions)) |
| 759 | } |
| 760 | |
| 761 | // Build version options with clear labels showing version numbers, IDs, and deployment status. |
| 762 | versionOptions := make([]string, len(versions)) |
| 763 | versionNumbers := make([]int, len(versions)) |
| 764 | |
| 765 | for i, v := range versions { |
| 766 | versionNumbers[i] = v.Number |
| 767 | deployedStatus := "" |
| 768 | if v.Deployed { |
| 769 | deployedStatus = " [DEPLOYED]" |
| 770 | } else { |
| 771 | deployedStatus = " [DRAFT]" |
| 772 | } |
| 773 | |
| 774 | versionID := *v.ID |
| 775 | |
| 776 | versionOptions[i] = fmt.Sprintf("v%d (%s)%s", v.Number, versionID, deployedStatus) |
| 777 | } |
| 778 | |
| 779 | var fromVersionStr, toVersionStr string |
| 780 | |
| 781 | // Ask for first version (baseline). |
| 782 | if err := prompt.AskOne(&survey.Question{ |
| 783 | Name: "fromVersion", |
| 784 | Prompt: &survey.Select{ |
| 785 | Message: "Select the first version (baseline):", |
| 786 | Options: versionOptions, |
| 787 | }, |
| 788 | Validate: survey.Required, |
| 789 | }, &fromVersionStr); err != nil { |
| 790 | return 0, 0, handleInputError(err) |
| 791 | } |
| 792 | |
| 793 | // Find the selected "from" version number. |
| 794 | var selectedFromVersion int |
| 795 | for i, option := range versionOptions { |
| 796 | if option == fromVersionStr { |
| 797 | selectedFromVersion = versionNumbers[i] |
| 798 | break |
| 799 | } |
| 800 | } |
| 801 | |
| 802 | // Build filtered options for "to" version (excluding the already selected "from" version). |
| 803 | var filteredToOptions []string |
| 804 | var filteredToNumbers []int |
| 805 | for i, option := range versionOptions { |
| 806 | if versionNumbers[i] != selectedFromVersion { |
| 807 | filteredToOptions = append(filteredToOptions, option) |
| 808 | filteredToNumbers = append(filteredToNumbers, versionNumbers[i]) |
| 809 | } |
| 810 | } |
| 811 | |
| 812 | // Ask for second version (comparison target) - only show remaining options. |
| 813 | if err := prompt.AskOne(&survey.Question{ |
no test coverage detected