(opts *AllowOptions)
| 86 | } |
| 87 | |
| 88 | func resolveReleaseDefectRun(opts *AllowOptions) error { |
| 89 | if !opts.NoPrompt { |
| 90 | if err := PromptMissing(opts); err != nil { |
| 91 | return err |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | var err error |
| 96 | opts.ReleaseID, err = shared.GetReleaseID(opts.Client, opts.Client.GetSpaceID(), opts.Project.Value, opts.Version.Value) |
| 97 | if err != nil { |
| 98 | return err |
| 99 | } |
| 100 | |
| 101 | resolveDefectCommand, err := defects.NewResolveReleaseDefectCommand(opts.ReleaseID) |
| 102 | if err != nil { |
| 103 | return err |
| 104 | } |
| 105 | |
| 106 | existingDefects, err := defects.GetAll(opts.Client, opts.Client.GetSpaceID(), opts.ReleaseID) |
| 107 | if err != nil { |
| 108 | return err |
| 109 | } |
| 110 | |
| 111 | isReleaseAllowedToProgressAlready := util.SliceContainsAll(existingDefects, func(item *defects.Defect) bool { |
| 112 | return item.Status == defects.DefectStatusResolved |
| 113 | }) |
| 114 | if isReleaseAllowedToProgressAlready { |
| 115 | _, _ = fmt.Fprintf(opts.Out, "Release with version/release number '%s' (%s) is already allowed to progress to the next phase.\n", opts.Version.Value, output.Dim(opts.ReleaseID)) |
| 116 | return nil |
| 117 | } |
| 118 | |
| 119 | _, err = defects.Resolve(opts.Client, opts.Client.GetSpaceID(), resolveDefectCommand) |
| 120 | if err != nil { |
| 121 | return err |
| 122 | } |
| 123 | |
| 124 | _, err = fmt.Fprintf(opts.Out, "Successfully allowed progression for release %s (%s) in project %s\n", opts.Version.Value, output.Dim(opts.ReleaseID), opts.Project.Value) |
| 125 | if err != nil { |
| 126 | return err |
| 127 | } |
| 128 | |
| 129 | if !opts.NoPrompt { |
| 130 | autoCmd := flag.GenerateAutomationCmd(opts.CmdPath, opts.GetSpaceNameOrEmpty(), opts.Project, opts.Version) |
| 131 | _, _ = fmt.Fprintf(opts.Out, "\nAutomation Command: %s\n", autoCmd) |
| 132 | } |
| 133 | |
| 134 | return nil |
| 135 | } |
| 136 | |
| 137 | func PromptMissing(opts *AllowOptions) error { |
| 138 | var err error |
no test coverage detected