Implement `bst artifact show`

Background

A new artifact sub-command: bst artifact show was proposed by @BenjaminSchubert on the mailing list (see: here). The implementation of this command was then proposed by myself and discussed on the list (see: here).

In the discussion, it was highlighted that it's important to have the --deps argument for this command. This means that we need to be able to load a dependency graph given an artifact ref. Therefore, implementing support for this will be considered a prerequsite to implementing bst artifact show.

Task description

  • Ensure that the proto has the necessary information which will allow it to reconstruct a dependency graph - (!1548 (merged))
  • Add the ability to walk an artifact's dependency tree to the loader
  • Add the ability to load artifacts and their (build) dependencies - (!1553 (merged))
  • Write bst artifact show for the local cache case - (!1560 (merged): abbcc263)
  • Add remote support (via a --remote/--all-remotes flags)to bst artifact show
  • add remote support to bst artifact show - (!1560 (merged): bf6ca661)

Acceptance Criteria

We should be able to use bst artifact show to see if artifacts are available remotely.

Further work

  • Once the support for loading a dependency graph given an artifact ref has landed, we can then fix artifact push/pull/checkout to ensure that they can support artifact refs as arguments
  • Refactor the loader so that we can perform artifact related jobs outside of a project
  • Address artifacts only by cache key
Edited by James Ennis