MCPcopy
hub / github.com/kopia/kopia / run

Method run

cli/command_logs_show.go:32–79  ·  view source on GitHub ↗
(ctx context.Context, rep repo.DirectRepository)

Source from the content-addressed store, hash-verified

30}
31
32func (c *commandLogsShow) run(ctx context.Context, rep repo.DirectRepository) error {
33 sessions, err := getLogSessions(ctx, rep.BlobReader())
34 if err != nil {
35 return err
36 }
37
38 sessions = c.crit.filterLogSessions(sessions)
39
40 if len(c.logSessionIDs) > 0 {
41 sessions = filterLogSessions(sessions, func(l *logSessionInfo) bool {
42 return slices.Contains(c.logSessionIDs, l.id)
43 })
44 }
45
46 if len(sessions) == 0 {
47 return errors.New("no logs found")
48 }
49
50 // by default show latest one
51 if !c.crit.any() {
52 sessions = sessions[len(sessions)-1:]
53 log(ctx).Infof("Showing the latest log (%v)", formatTimestamp(sessions[0].startTime))
54 }
55
56 var data gather.WriteBuffer
57 defer data.Close()
58
59 var decrypted gather.WriteBuffer
60 defer decrypted.Close()
61
62 for _, s := range sessions {
63 for _, bm := range s.segments {
64 if err := rep.BlobReader().GetBlob(ctx, bm.BlobID, 0, -1, &data); err != nil {
65 return errors.Wrap(err, "error getting log")
66 }
67
68 if err := blobcrypto.Decrypt(rep.ContentReader().ContentFormat(), data.Bytes(), bm.BlobID, &decrypted); err != nil {
69 return errors.Wrap(err, "error decrypting log")
70 }
71
72 if err := showContentWithFlags(c.out.stdout(), decrypted.Bytes().Reader(), true, false); err != nil {
73 log(ctx).Errorf("error showing log: %v", err)
74 }
75 }
76 }
77
78 return nil
79}

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
BytesMethod · 0.95
DecryptFunction · 0.92
getLogSessionsFunction · 0.85
filterLogSessionsFunction · 0.85
formatTimestampFunction · 0.85
showContentWithFlagsFunction · 0.85
filterLogSessionsMethod · 0.80
anyMethod · 0.80
ErrorfMethod · 0.80
BlobReaderMethod · 0.65
GetBlobMethod · 0.65

Tested by

no test coverage detected