| 122 | } |
| 123 | |
| 124 | func runBug(env *execenv.Env, opts bugOptions, args []string) error { |
| 125 | var q *query.Query |
| 126 | var err error |
| 127 | |
| 128 | if len(args) >= 1 { |
| 129 | // either the shell or cobra remove the quotes, we need them back for the query parsing |
| 130 | assembled := repairQuery(args) |
| 131 | |
| 132 | q, err = query.Parse(assembled) |
| 133 | if err != nil { |
| 134 | return err |
| 135 | } |
| 136 | } else { |
| 137 | q = query.NewQuery() |
| 138 | } |
| 139 | |
| 140 | err = completeQuery(q, opts) |
| 141 | if err != nil { |
| 142 | return err |
| 143 | } |
| 144 | |
| 145 | allIds, err := env.Backend.Bugs().Query(q) |
| 146 | if err != nil { |
| 147 | return err |
| 148 | } |
| 149 | |
| 150 | excerpts := make([]*cache.BugExcerpt, len(allIds)) |
| 151 | for i, id := range allIds { |
| 152 | b, err := env.Backend.Bugs().ResolveExcerpt(id) |
| 153 | if err != nil { |
| 154 | return err |
| 155 | } |
| 156 | excerpts[i] = b |
| 157 | } |
| 158 | |
| 159 | switch opts.outputFormat { |
| 160 | case "default": |
| 161 | if opts.outputFormatChanged { |
| 162 | return bugsDefaultFormatter(env, excerpts) |
| 163 | } |
| 164 | if env.Out.IsTerminal() { |
| 165 | return bugsDefaultFormatter(env, excerpts) |
| 166 | } else { |
| 167 | return bugsPlainFormatter(env, excerpts) |
| 168 | } |
| 169 | case "id": |
| 170 | return bugsIDFormatter(env, excerpts) |
| 171 | case "plain": |
| 172 | return bugsPlainFormatter(env, excerpts) |
| 173 | case "json": |
| 174 | return bugsJsonFormatter(env, excerpts) |
| 175 | case "org-mode": |
| 176 | return bugsOrgmodeFormatter(env, excerpts) |
| 177 | default: |
| 178 | return fmt.Errorf("unknown format %s", opts.outputFormat) |
| 179 | } |
| 180 | } |
| 181 | |