mirror of
https://github.com/kopia/kopia.git
synced 2026-01-26 07:18:02 -05:00
69 lines
2.0 KiB
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)
|
|
}
|