Files
kopia/cli/command_status.go

69 lines
2.0 KiB
Go

package cli
import (
"encoding/json"
"fmt"
"github.com/kopia/kopia/blob"
"github.com/kopia/kopia/internal/units"
kingpin "gopkg.in/alecthomas/kingpin.v2"
)
var (
statusCommand = app.Command("status", "Show status of repository")
)
func runStatusCommand(context *kingpin.ParseContext) error {
rep := mustOpenRepository(nil)
defer rep.Close()
s := rep.Status()
fmt.Printf("Config file: %v\n", rep.ConfigFile)
fmt.Printf("Cache directory: %v\n", rep.CacheDirectory)
fmt.Println()
if cip, ok := rep.Storage.(blob.ConnectionInfoProvider); ok {
ci := cip.ConnectionInfo()
fmt.Printf("Storage type: %v\n", ci.Type)
if cjson, err := json.MarshalIndent(ci.Config, " ", " "); err == nil {
fmt.Printf("Storage config: %v\n", string(cjson))
}
fmt.Println()
}
var splitterExtraInfo string
switch s.Splitter {
case "DYNAMIC":
splitterExtraInfo = fmt.Sprintf(
" (min: %v; avg: %v; max: %v)",
units.BytesStringBase2(int64(s.MinBlockSize)),
units.BytesStringBase2(int64(s.AvgBlockSize)),
units.BytesStringBase2(int64(s.MaxBlockSize)))
case "":
case "FIXED":
splitterExtraInfo = fmt.Sprintf(" %v", units.BytesStringBase2(int64(s.MaxBlockSize)))
}
fmt.Println()
fmt.Printf("Metadata manager: v%v\n", s.MetadataManagerVersion)
fmt.Printf("Metadata Encryption: %v\n", s.MetadataEncryptionAlgorithm)
fmt.Printf("Key Derivation: %v\n", s.KeyDerivationAlgorithm)
fmt.Printf("Unique ID: %v\n", s.UniqueID)
fmt.Println()
fmt.Printf("Object manager: v%v\n", s.ObjectManagerVersion)
fmt.Printf("Object format: %v\n", s.ObjectFormat)
fmt.Printf("Splitter: %v%v\n", s.Splitter, splitterExtraInfo)
fmt.Printf("Inline content len: %v\n", s.MaxInlineContentLength)
if s.MaxPackFileLength > 0 {
fmt.Printf("Max pack file size: %v (max object %v)\n", units.BytesStringBase2(int64(s.MaxPackFileLength)), units.BytesStringBase2(int64(s.MaxPackedContentLength)))
}
return nil
}
func init() {
statusCommand.Action(runStatusCommand)
}