6
"github.com/spf13/cobra"
7
"github.com/wal-g/tracelog"
8
"github.com/wal-g/wal-g/internal"
9
"github.com/wal-g/wal-g/internal/databases/postgres"
10
"github.com/wal-g/wal-g/internal/databases/postgres/constants"
13
const WalFetchShortDescription = "Fetches a WAL file from storage"
16
var walFetchCmd = &cobra.Command{
17
Use: "wal-fetch wal_name destination_filename",
18
Short: WalFetchShortDescription,
19
Args: cobra.ExactArgs(2),
20
Run: func(cmd *cobra.Command, args []string) {
21
storage, err := postgres.ConfigureMultiStorage(false)
22
tracelog.ErrorLogger.FatalfOnError("Failed to configure multi-storage: %v", err)
24
folderReader, err := internal.PrepareMultiStorageFolderReader(storage.RootFolder(), targetStorage)
25
tracelog.ErrorLogger.FatalOnError(err)
27
err = postgres.HandleWALFetch(folderReader, args[0], args[1], postgres.RegularPrefetcher{})
28
if _, isArchNonExistErr := err.(internal.ArchiveNonExistenceError); isArchNonExistErr {
29
tracelog.ErrorLogger.Print(err.Error())
30
os.Exit(constants.ExIoError)
32
tracelog.ErrorLogger.FatalOnError(err)
37
Cmd.AddCommand(walFetchCmd)
38
walFetchCmd.Flags().StringVar(&targetStorage, "target-storage", "", targetStorageDescription)