| 238 | } |
| 239 | |
| 240 | func (*Cmd) stderrExcerpt(stderr []byte) string { |
| 241 | stderr = bytes.TrimSpace(stderr) |
| 242 | if len(stderr) == 0 { |
| 243 | return "" |
| 244 | } |
| 245 | |
| 246 | lines := bytes.Split(stderr, []byte("\n")) |
| 247 | slices.Reverse(lines) |
| 248 | for _, line := range lines { |
| 249 | line = bytes.TrimSpace(line) |
| 250 | after, found := bytes.CutPrefix(line, []byte("error: ")) |
| 251 | if !found { |
| 252 | continue |
| 253 | } |
| 254 | after = bytes.TrimSpace(after) |
| 255 | if len(after) == 0 { |
| 256 | continue |
| 257 | } |
| 258 | stderr = after |
| 259 | break |
| 260 | |
| 261 | } |
| 262 | |
| 263 | excerpt := string(stderr) |
| 264 | if !strconv.CanBackquote(excerpt) { |
| 265 | quoted := strconv.Quote(excerpt) |
| 266 | excerpt = quoted[1 : len(quoted)-1] |
| 267 | } |
| 268 | return excerpt |
| 269 | } |
| 270 | |
| 271 | func (c *Cmd) logger() *slog.Logger { |
| 272 | if c.Logger == nil { |