package cli import ( "github.com/spf13/cobra" "sneak.berlin/go/vaultik/internal/log" "sneak.berlin/go/vaultik/internal/vaultik" ) // NewInfoCommand creates the info command func NewInfoCommand() *cobra.Command { cmd := &cobra.Command{ Use: "info", Short: "Display system and configuration information", Long: `Shows information about the current vaultik configuration, including: - System details (OS, architecture, version) - Storage configuration (S3 bucket, endpoint) - Backup settings (source directories, compression) - Encryption configuration (recipients) - Local database statistics`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, _ []string) error { // Use unified config resolution configPath, err := ResolveConfigPath() if err != nil { return err } // Use the app framework rootFlags := GetRootFlags() return RunOperation(cmd.Context(), AppOptions{ ConfigPath: configPath, LogOptions: log.Options{ Verbose: rootFlags.Verbose, Debug: rootFlags.Debug, Quiet: rootFlags.Quiet, }, }, func(v *vaultik.Vaultik) error { return v.ShowInfo() }, func(err error) { log.Error("Failed to show info", "error", err) ReportErrorf("Failed to show info: %v", err) }) }, } return cmd }