resolveFieldColumns turns the --field (names) and --field-id (node IDs) flags into ordered column descriptors. Names are resolved with ResolveFieldByName so unknown or ambiguous names fail with candidate-carrying errors; IDs are validated against the project's fields so an unknown ID also fails clea
(opts listOpts, fields []queries.ProjectField)
| 200 | // unknown or ambiguous names fail with candidate-carrying errors; IDs are |
| 201 | // validated against the project's fields so an unknown ID also fails clearly. |
| 202 | func resolveFieldColumns(opts listOpts, fields []queries.ProjectField) ([]fieldColumn, error) { |
| 203 | columns := make([]fieldColumn, 0, len(opts.fields)+len(opts.fieldIDs)) |
| 204 | |
| 205 | for _, name := range opts.fields { |
| 206 | field, err := queries.ResolveFieldByName(fields, name) |
| 207 | if err != nil { |
| 208 | return nil, err |
| 209 | } |
| 210 | columns = append(columns, fieldColumn{Header: field.Name(), FieldID: field.ID()}) |
| 211 | } |
| 212 | |
| 213 | for _, id := range opts.fieldIDs { |
| 214 | field, err := queries.ResolveFieldByID(fields, id) |
| 215 | if err != nil { |
| 216 | return nil, err |
| 217 | } |
| 218 | columns = append(columns, fieldColumn{Header: field.Name(), FieldID: field.ID()}) |
| 219 | } |
| 220 | |
| 221 | return columns, nil |
| 222 | } |
| 223 | |
| 224 | func printResults(config listConfig, items []queries.ProjectItem, login string, extraFields []fieldColumn) error { |
| 225 | if len(items) == 0 { |
no test coverage detected