mirror of
https://github.com/kopia/kopia.git
synced 2026-01-25 23:08:01 -05:00
added 'manifest show' subcommand
This commit is contained in:
44
cli/command_manifest_show.go
Normal file
44
cli/command_manifest_show.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
manifestShowCommand = manifestCommands.Command("show", "Show manifest items").Hidden()
|
||||
manifestShowItems = manifestShowCommand.Arg("item", "List of items").Required().Strings()
|
||||
)
|
||||
|
||||
func init() {
|
||||
manifestShowCommand.Action(showManifestItems)
|
||||
}
|
||||
|
||||
func showManifestItems(context *kingpin.ParseContext) error {
|
||||
rep := mustOpenRepository(nil)
|
||||
|
||||
for _, it := range *manifestShowItems {
|
||||
md, err := rep.Manifests.GetMetadata(it)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting metadata for %q: %v", it, err)
|
||||
}
|
||||
|
||||
b, err := rep.Manifests.GetRaw(it)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error showing %q: %v", it, err)
|
||||
}
|
||||
|
||||
fmt.Fprintf(os.Stderr, "// id: %v\n", it)
|
||||
fmt.Fprintf(os.Stderr, "// length: %v\n", md.Length)
|
||||
fmt.Fprintf(os.Stderr, "// modified: %v\n", md.ModTime.Format(timeFormat))
|
||||
for k, v := range md.Labels {
|
||||
fmt.Fprintf(os.Stderr, "// label %v:%v\n", k, v)
|
||||
}
|
||||
showContentWithFlags(bytes.NewReader(b), false, true)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -78,19 +78,28 @@ func (m *Manager) GetMetadata(id string) (*EntryMetadata, error) {
|
||||
}
|
||||
|
||||
func (m *Manager) Get(id string, data interface{}) error {
|
||||
b, err := m.GetRaw(id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, data); err != nil {
|
||||
return fmt.Errorf("unable to unmashal %q: %v", id, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Manager) GetRaw(id string) ([]byte, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
e := m.entries[id]
|
||||
if e == nil {
|
||||
return ErrNotFound
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(e.Content, data); err != nil {
|
||||
return fmt.Errorf("unable to unmashal %q: %v", id, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
return e.Content, nil
|
||||
}
|
||||
|
||||
func (m *Manager) Find(labels map[string]string) []*EntryMetadata {
|
||||
|
||||
Reference in New Issue
Block a user