| 90 | } |
| 91 | |
| 92 | func editRun(tag string, opts *EditOptions) error { |
| 93 | httpClient, err := opts.HttpClient() |
| 94 | if err != nil { |
| 95 | return err |
| 96 | } |
| 97 | |
| 98 | baseRepo, err := opts.BaseRepo() |
| 99 | if err != nil { |
| 100 | return err |
| 101 | } |
| 102 | |
| 103 | release, err := shared.FetchRelease(context.Background(), httpClient, baseRepo, tag) |
| 104 | if err != nil { |
| 105 | return err |
| 106 | } |
| 107 | |
| 108 | params := getParams(opts) |
| 109 | |
| 110 | // If we don't provide any tag name, the API will remove the current tag from the release |
| 111 | if _, ok := params["tag_name"]; !ok { |
| 112 | params["tag_name"] = release.TagName |
| 113 | } |
| 114 | |
| 115 | if opts.VerifyTag && opts.TagName != "" { |
| 116 | remoteTagPresent, err := remoteTagExists(httpClient, baseRepo, opts.TagName) |
| 117 | if err != nil { |
| 118 | return err |
| 119 | } |
| 120 | if !remoteTagPresent { |
| 121 | return fmt.Errorf("tag %s doesn't exist in the repo %s, aborting due to --verify-tag flag", |
| 122 | opts.TagName, ghrepo.FullName(baseRepo)) |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | editedRelease, err := editRelease(httpClient, baseRepo, release.DatabaseID, params) |
| 127 | if err != nil { |
| 128 | return err |
| 129 | } |
| 130 | |
| 131 | fmt.Fprintf(opts.IO.Out, "%s\n", editedRelease.URL) |
| 132 | |
| 133 | return nil |
| 134 | } |
| 135 | |
| 136 | func getParams(opts *EditOptions) map[string]interface{} { |
| 137 | params := map[string]interface{}{} |