mirror of
https://github.com/kopia/kopia.git
synced 2026-03-13 11:46:55 -04:00
* 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
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package cli
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/kopia/kopia/repo"
|
|
"github.com/kopia/kopia/repo/manifest"
|
|
)
|
|
|
|
var (
|
|
manifestShowCommand = manifestCommands.Command("show", "Show manifest items")
|
|
manifestShowItems = manifestShowCommand.Arg("item", "List of items").Required().Strings()
|
|
)
|
|
|
|
func init() {
|
|
manifestShowCommand.Action(repositoryAction(showManifestItems))
|
|
}
|
|
|
|
func toManifestIDs(s []string) []manifest.ID {
|
|
var result []manifest.ID
|
|
|
|
for _, it := range s {
|
|
result = append(result, manifest.ID(it))
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func showManifestItems(ctx context.Context, rep repo.Repository) error {
|
|
for _, it := range toManifestIDs(*manifestShowItems) {
|
|
var b json.RawMessage
|
|
|
|
md, err := rep.GetManifest(ctx, it, &b)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "error getting metadata for %q", it)
|
|
}
|
|
|
|
printStderr("// id: %v\n", it)
|
|
printStderr("// length: %v\n", md.Length)
|
|
printStderr("// modified: %v\n", formatTimestamp(md.ModTime))
|
|
|
|
for k, v := range md.Labels {
|
|
printStderr("// label %v:%v\n", k, v)
|
|
}
|
|
|
|
if showerr := showContentWithFlags(bytes.NewReader(b), false, true); showerr != nil {
|
|
return showerr
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|