(ctx context.Context, args []string, url string, diff bool, rev bool, noMetrics bool)
| 23 | ) |
| 24 | |
| 25 | func (cli *cliItem) inspect(ctx context.Context, args []string, url string, diff bool, rev bool, noMetrics bool) error { |
| 26 | cfg := cli.cfg() |
| 27 | |
| 28 | if rev && !diff { |
| 29 | return errors.New("--rev can only be used with --diff") |
| 30 | } |
| 31 | |
| 32 | if url != "" { |
| 33 | cfg.Cscli.PrometheusUrl = url |
| 34 | } |
| 35 | |
| 36 | var ( |
| 37 | contentProvider cwhub.ContentProvider |
| 38 | err error |
| 39 | ) |
| 40 | |
| 41 | if diff { |
| 42 | contentProvider, err = require.HubDownloader(ctx, cfg) |
| 43 | if err != nil { |
| 44 | return err |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | hub, err := require.Hub(cfg, log.StandardLogger()) |
| 49 | if err != nil { |
| 50 | return err |
| 51 | } |
| 52 | |
| 53 | for _, name := range args { |
| 54 | item := hub.GetItem(cli.name, name) |
| 55 | if item == nil { |
| 56 | return fmt.Errorf("can't find '%s' in %s", name, cli.name) |
| 57 | } |
| 58 | |
| 59 | if diff { |
| 60 | fmt.Fprintln(os.Stdout, cli.whyTainted(ctx, hub, contentProvider, item, rev)) |
| 61 | |
| 62 | continue |
| 63 | } |
| 64 | |
| 65 | wantMetrics := !noMetrics && item.State.IsInstalled() |
| 66 | |
| 67 | if err := inspectItem(ctx, hub, item, wantMetrics, cfg.Cscli.Output, cfg.Cscli.PrometheusUrl, cfg.Cscli.Color); err != nil { |
| 68 | return err |
| 69 | } |
| 70 | |
| 71 | if cli.inspectDetail != nil { |
| 72 | if err := cli.inspectDetail(item); err != nil { |
| 73 | return err |
| 74 | } |
| 75 | } |
| 76 | } |
| 77 | |
| 78 | return nil |
| 79 | } |
| 80 | |
| 81 | // return the diff between the installed version and the latest version |
| 82 | func (*cliItem) itemDiff(ctx context.Context, item cwhub.Item, contentProvider cwhub.ContentProvider, reverse bool) (string, error) { |
no test coverage detected