Files
kopia/cli/command_content_show.go
Jarek Kowalski 6cb9b8fa4f repo: refactored public API (#318)
* This is 99% mechanical:

Extracted repo.Repository interface that only exposes high-level object and manifest management methods, but not blob nor content management.

Renamed old *repo.Repository to *repo.DirectRepository

Reviewed codebase to only depend on repo.Repository as much as possible, but added way for low-level CLI commands to use DirectRepository.

* PR fixes
2020-03-26 08:04:01 -07:00

40 lines
904 B
Go

package cli
import (
"bytes"
"context"
"github.com/kopia/kopia/repo"
"github.com/kopia/kopia/repo/content"
)
var (
contentShowCommand = contentCommands.Command("show", "Show contents by ID.").Alias("cat")
contentShowIDs = contentShowCommand.Arg("id", "IDs of contents to show").Required().Strings()
)
func runContentShowCommand(ctx context.Context, rep *repo.DirectRepository) error {
for _, contentID := range toContentIDs(*contentShowIDs) {
if err := contentShow(ctx, rep, contentID); err != nil {
return err
}
}
return nil
}
func contentShow(ctx context.Context, r *repo.DirectRepository, contentID content.ID) error {
data, err := r.Content.GetContent(ctx, contentID)
if err != nil {
return err
}
return showContent(bytes.NewReader(data))
}
func init() {
setupShowCommand(contentShowCommand)
contentShowCommand.Action(directRepositoryAction(runContentShowCommand))
}