| 182 | } |
| 183 | |
| 184 | func (m *templateManager) Choose() (Template, error) { |
| 185 | if err := m.memoizedFetch(); err != nil { |
| 186 | return nil, err |
| 187 | } |
| 188 | if len(m.templates) == 0 { |
| 189 | return nil, nil |
| 190 | } |
| 191 | |
| 192 | names := make([]string, len(m.templates)) |
| 193 | for i, t := range m.templates { |
| 194 | names[i] = t.Name() |
| 195 | } |
| 196 | |
| 197 | blankOption := "Open a blank issue" |
| 198 | if m.isPR { |
| 199 | blankOption = "Open a blank pull request" |
| 200 | } |
| 201 | |
| 202 | selectedOption, err := m.prompter.Select("Choose a template", "", append(names, blankOption)) |
| 203 | if err != nil { |
| 204 | return nil, fmt.Errorf("could not prompt: %w", err) |
| 205 | } |
| 206 | |
| 207 | if selectedOption == len(names) { |
| 208 | return nil, nil |
| 209 | } |
| 210 | return m.templates[selectedOption], nil |
| 211 | } |
| 212 | |
| 213 | func (m *templateManager) Select(name string) (Template, error) { |
| 214 | if err := m.memoizedFetch(); err != nil { |