Skip to content

Commit 135f86e

Browse files
committed
implement help for probackup commands
1 parent a6be0c3 commit 135f86e

File tree

6 files changed

+263
-127
lines changed

6 files changed

+263
-127
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ OBJS = backup.o \
66
delete.o \
77
dir.o \
88
fetch.o \
9+
help.o \
910
init.o \
1011
parray.o \
1112
pg_probackup.o \

help.c

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* help.c
4+
*
5+
* Portions Copyright (c) 2017-2017, Postgres Professional
6+
*
7+
*-------------------------------------------------------------------------
8+
*/
9+
#include "pg_probackup.h"
10+
11+
static void help_init(void);
12+
static void help_backup(void);
13+
static void help_restore(void);
14+
static void help_validate(void);
15+
static void help_show(void);
16+
static void help_delete(void);
17+
static void help_set_config(void);
18+
static void help_show_config(void);
19+
20+
void
21+
help_command(char *command)
22+
{
23+
if (strcmp(command, "init") == 0)
24+
help_init();
25+
else if (strcmp(command, "backup") == 0)
26+
help_backup();
27+
else if (strcmp(command, "restore") == 0)
28+
help_restore();
29+
else if (strcmp(command, "validate") == 0)
30+
help_validate();
31+
else if (strcmp(command, "show") == 0)
32+
help_show();
33+
else if (strcmp(command, "delete") == 0)
34+
help_delete();
35+
else if (strcmp(command, "set-config") == 0)
36+
help_set_config();
37+
else if (strcmp(command, "show-config") == 0)
38+
help_show_config();
39+
else if (strcmp(command, "--help") == 0
40+
|| strcmp(command, "help") == 0
41+
|| strcmp(command, "-?") == 0
42+
|| strcmp(command, "--version") == 0
43+
|| strcmp(command, "version") == 0
44+
|| strcmp(command, "-V") == 0)
45+
printf(_("No help page for \"%s\" command. Try pg_probackup help\n"), command);
46+
else
47+
printf(_("Unknown command. Try pg_probackup help\n"));
48+
exit(0);
49+
}
50+
51+
void
52+
help_pg_probackup(void)
53+
{
54+
printf(_("\n%s - utility to manage backup/recovery of PostgreSQL database.\n\n"), PROGRAM_NAME);
55+
56+
printf(_(" %s help [COMMAND]\n"), PROGRAM_NAME);
57+
58+
printf(_("\n %s version\n"), PROGRAM_NAME);
59+
60+
printf(_("\n %s init -B backup-path -D pgdata-dir\n"), PROGRAM_NAME);
61+
62+
printf(_("\n %s set-config -B backup-dir\n"), PROGRAM_NAME);
63+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
64+
printf(_(" [--retention-redundancy=retention-redundancy]]\n"));
65+
printf(_(" [--retention-window=retention-window]\n"));
66+
67+
printf(_("\n %s show-config -B backup-dir\n"), PROGRAM_NAME);
68+
69+
printf(_("\n %s backup -B backup-path -b backup-mode\n"), PROGRAM_NAME);
70+
printf(_(" [-D pgdata-dir] [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
71+
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
72+
printf(_(" [--progress] [-q] [-v] [--delete-expired]\n"));
73+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
74+
75+
printf(_("\n %s restore -B backup-dir\n"), PROGRAM_NAME);
76+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
77+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
78+
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n"));
79+
80+
printf(_("\n %s validate -B backup-dir\n"), PROGRAM_NAME);
81+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
82+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
83+
printf(_(" [--timeline=timeline]\n"));
84+
85+
printf(_("\n %s show -B backup-dir\n"), PROGRAM_NAME);
86+
printf(_(" [-i backup-id]\n"));
87+
88+
printf(_("\n %s delete -B backup-dir\n"), PROGRAM_NAME);
89+
printf(_(" [--wal] [-i backup-id | --expired]\n"));
90+
91+
if ((PROGRAM_URL || PROGRAM_EMAIL))
92+
{
93+
printf("\n");
94+
if (PROGRAM_URL)
95+
printf("Read the website for details. <%s>\n", PROGRAM_URL);
96+
if (PROGRAM_EMAIL)
97+
printf("Report bugs to <%s>.\n", PROGRAM_EMAIL);
98+
}
99+
exit(0);
100+
}
101+
102+
static void
103+
help_init(void)
104+
{
105+
printf(_("%s init -B backup-path -D pgdata-dir\n\n"), PROGRAM_NAME);
106+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
107+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
108+
}
109+
110+
static void
111+
help_backup(void)
112+
{
113+
printf(_("%s backup -B backup-path -b backup-mode\n"), PROGRAM_NAME);
114+
printf(_(" [-D pgdata-dir] [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
115+
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
116+
printf(_(" [--progress] [-q] [-v] [--delete-expired]\n"));
117+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n\n"));
118+
119+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
120+
printf(_(" -b, --backup-mode=backup-mode backup mode=FULL|PAGE|PTRACK\n"));
121+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
122+
printf(_(" -C, --smooth-checkpoint do smooth checkpoint before backup\n"));
123+
printf(_(" --stream stream the transaction log and include it in the backup\n"));
124+
printf(_(" --archive-timeout wait timeout for WAL segment archiving\n"));
125+
printf(_(" -S, --slot=SLOTNAME replication slot to use\n"));
126+
printf(_(" --backup-pg-log backup of pg_log directory\n"));
127+
printf(_(" -j, --threads=NUM number of parallel threads\n"));
128+
printf(_(" --progress show progress\n"));
129+
printf(_(" -q, --quiet don't write any messages\n"));
130+
printf(_(" -v, --verbose verbose mode\n"));
131+
printf(_(" --delete-expired delete backups expired according to current\n"));
132+
printf(_(" retention policy after successful backup completion\n"));
133+
134+
printf(_("\n Connection options:\n"));
135+
printf(_(" -d, --dbname=DBNAME database to connect\n"));
136+
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
137+
printf(_(" -p, --port=PORT database server port\n"));
138+
printf(_(" -U, --username=USERNAME user name to connect as\n"));
139+
}
140+
141+
static void
142+
help_restore(void)
143+
{
144+
printf(_("%s restore -B backup-dir\n"), PROGRAM_NAME);
145+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
146+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
147+
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n\n"));
148+
149+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
150+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
151+
printf(_(" -i, --backup-id=backup-id backup to restore\n"));
152+
153+
printf(_(" --progress show progress\n"));
154+
printf(_(" -q, --quiet don't write any messages\n"));
155+
printf(_(" -v, --verbose verbose mode\n"));
156+
printf(_(" --time=time time stamp up to which recovery will proceed\n"));
157+
printf(_(" --xid=xid transaction ID up to which recovery will proceed\n"));
158+
printf(_(" --inclusive=boolean whether we stop just after the recovery target\n"));
159+
printf(_(" --timeline=timeline recovering into a particular timeline\n"));
160+
printf(_(" -T, --tablespace-mapping=OLDDIR=NEWDIR\n"));
161+
printf(_(" relocate the tablespace from directory OLDDIR to NEWDIR\n"));
162+
}
163+
164+
static void
165+
help_validate(void)
166+
{
167+
printf(_("%s validate -B backup-dir\n"), PROGRAM_NAME);
168+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
169+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
170+
printf(_(" [--timeline=timeline]\n\n"));
171+
172+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
173+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
174+
printf(_(" -i, --backup-id=backup-id backup to validate\n"));
175+
176+
printf(_(" --progress show progress\n"));
177+
printf(_(" -q, --quiet don't write any messages\n"));
178+
printf(_(" -v, --verbose verbose mode\n"));
179+
printf(_(" --time=time time stamp up to which recovery will proceed\n"));
180+
printf(_(" --xid=xid transaction ID up to which recovery will proceed\n"));
181+
printf(_(" --inclusive=boolean whether we stop just after the recovery target\n"));
182+
printf(_(" --timeline=timeline recovering into a particular timeline\n"));
183+
}
184+
185+
static void
186+
help_show(void)
187+
{
188+
printf(_("%s show -B backup-dir\n"), PROGRAM_NAME);
189+
printf(_(" [-i backup-id]\n\n"));
190+
191+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
192+
printf(_(" -i, --backup-id=backup-id show info about specific backups\n"));
193+
}
194+
195+
static void
196+
help_delete(void)
197+
{
198+
printf(_("%s delete -B backup-dir\n"), PROGRAM_NAME);
199+
printf(_(" [--wal] [-i backup-id | --expired]\n\n"));
200+
201+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
202+
printf(_(" --wal remove unnecessary wal files\n"));
203+
printf(_(" -i, --backup-id=backup-id backup to delete\n"));
204+
printf(_(" --expired delete backups expired according to current\n"));
205+
printf(_(" retention policy\n"));
206+
}
207+
208+
static void
209+
help_set_config(void)
210+
{
211+
printf(_("%s set-config -B backup-dir\n"), PROGRAM_NAME);
212+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
213+
printf(_(" [--retention-redundancy=retention-redundancy]]\n"));
214+
printf(_(" [--retention-window=retention-window]\n\n"));
215+
216+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
217+
218+
printf(_("\n Connection options:\n"));
219+
printf(_(" -d, --dbname=DBNAME database to connect\n"));
220+
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
221+
printf(_(" -p, --port=PORT database server port\n"));
222+
printf(_(" -U, --username=USERNAME user name to connect as\n"));
223+
224+
printf(_("\n Retention options:\n"));
225+
printf(_(" --retention-redundancy=retention-redundancy\n"));
226+
printf(_(" number of full backups to keep\n"));
227+
printf(_(" --retention-window=retention-window\n"));
228+
printf(_(" number of days of recoverability\n"));
229+
230+
}
231+
232+
static void
233+
help_show_config(void)
234+
{
235+
printf(_("%s show-config -B backup-dir\n\n"), PROGRAM_NAME);
236+
237+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
238+
}

pg_probackup.c

Lines changed: 20 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ char arclog_path[MAXPGPATH];
2929
pgBackup current;
3030
ProbackupSubcmd backup_subcmd;
3131

32+
bool help = false;
33+
3234
char *backup_id_string_param = NULL;
3335
bool backup_logs = false;
3436

@@ -59,6 +61,7 @@ static void opt_backup_mode(pgut_option *opt, const char *arg);
5961
static pgut_option options[] =
6062
{
6163
/* directory options */
64+
{ 'b', 1, "help", &help, SOURCE_CMDLINE },
6265
{ 's', 'D', "pgdata", &pgdata, SOURCE_CMDLINE },
6366
{ 's', 'B', "backup-path", &backup_path, SOURCE_CMDLINE },
6467
/* common options */
@@ -141,23 +144,35 @@ main(int argc, char *argv[])
141144
|| strcmp(argv[1], "help") == 0
142145
|| strcmp(argv[1], "-?") == 0)
143146
{
144-
help(true);
145-
exit(0);
147+
if (argc > 2)
148+
help_command(argv[2]);
149+
else
150+
help_pg_probackup();
146151
}
147152
else if (strcmp(argv[1], "--version") == 0
148153
|| strcmp(argv[1], "version") == 0
149154
|| strcmp(argv[1], "-V") == 0)
150155
{
151-
fprintf(stderr, "%s %s\n", PROGRAM_NAME, PROGRAM_VERSION);
152-
exit(0);
156+
if (argc == 2)
157+
{
158+
fprintf(stderr, "%s %s\n", PROGRAM_NAME, PROGRAM_VERSION);
159+
exit(0);
160+
}
161+
else if (strcmp(argv[2], "--help") == 0)
162+
help_command(argv[1]);
163+
else
164+
elog(ERROR, "Invalid arguments for \"%s\" subcommand", argv[1]);
153165
}
154166
else
155-
elog(ERROR, "Invalid subcommand");
167+
elog(ERROR, "Unknown subcommand");
156168
}
157169

158170
/* Parse command line arguments */
159171
pgut_getopt(argc, argv, options);
160172

173+
if (help)
174+
help_command(argv[2]);
175+
161176
if (backup_path == NULL)
162177
{
163178
/* Try to read BACKUP_PATH from environment variable */
@@ -263,92 +278,6 @@ main(int argc, char *argv[])
263278
return 0;
264279
}
265280

266-
/* TODO Update help in accordance with new options */
267-
void
268-
pgut_help(bool details)
269-
{
270-
printf(_("\n%s - utility to manage backup/recovery of PostgreSQL database.\n\n"), PROGRAM_NAME);
271-
272-
printf(_(" %s help\n"), PROGRAM_NAME);
273-
274-
printf(_("\n %s version\n"), PROGRAM_NAME);
275-
276-
printf(_("\n %s init -B backup-path -D pgdata-dir\n"), PROGRAM_NAME);
277-
278-
printf(_("\n %s set-config -B backup-dir\n"), PROGRAM_NAME);
279-
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
280-
printf(_(" [--retention-redundancy=retention-redundancy]]\n"));
281-
printf(_(" [--retention-window=retention-window]\n"));
282-
283-
printf(_("\n %s show-config -B backup-dir\n"), PROGRAM_NAME);
284-
285-
printf(_("\n %s backup -B backup-path -b backup-mode\n"), PROGRAM_NAME);
286-
printf(_(" [-D pgdata-dir] [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
287-
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
288-
printf(_(" [--progress] [-q] [-v] [--delete-expired]\n"));
289-
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
290-
291-
printf(_("\n %s restore -B backup-dir\n"), PROGRAM_NAME);
292-
printf(_(" [-D pgdata-dir] [-i backup-id]\n"));
293-
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
294-
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n"));
295-
296-
printf(_("\n %s validate -B backup-dir\n"), PROGRAM_NAME);
297-
printf(_(" [-D pgdata-dir] [-i backup-id]\n"));
298-
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
299-
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n"));
300-
301-
printf(_("\n %s show -B backup-dir\n"), PROGRAM_NAME);
302-
printf(_(" [-i backup-id]\n"));
303-
304-
printf(_("\n %s delete -B backup-dir\n"), PROGRAM_NAME);
305-
printf(_(" [--wal] [-i backup-id | --expired] [--force]\n"));
306-
307-
308-
// printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
309-
// printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
310-
// printf(_(" -b, --backup-mode=backup-mode backup mode=FULL|PAGE|PTRACK\n"));
311-
// printf(" Connection options:\n");
312-
// printf(" -d, --dbname=DBNAME database to connect\n");
313-
// printf(" -h, --host=HOSTNAME database server host or socket directory\n");
314-
// printf(" -p, --port=PORT database server port\n");
315-
// printf(" -U, --username=USERNAME user name to connect as\n");
316-
// printf(" -w, --no-password never prompt for password\n");
317-
// printf(" -W, --password force password prompt\n");
318-
// printf(" Retention options:\n");
319-
// printf(_(" --retention-redundancy=n-full-backups specifies how many full backups purge command should keep\n"));
320-
// printf(_(" --retention-window=n-days specifies the number of days of recoverability\n"));
321-
//
322-
//
323-
// printf(_("\nOptional p:\n"));
324-
// printf(_(" -B, --backup-path=PATH location of the backup storage area\n"));
325-
// printf(_(" -D, --pgdata=PATH location of the database storage area\n"));
326-
// /*printf(_(" -c, --check show what would have been done\n"));*/
327-
// printf(_("\nBackup options:\n"));
328-
// printf(_(" -b, --backup-mode=MODE backup mode (full, page, ptrack)\n"));
329-
// printf(_(" -C, --smooth-checkpoint do smooth checkpoint before backup\n"));
330-
// printf(_(" --stream stream the transaction log and include it in the backup\n"));
331-
// printf(_(" --archive-timeout wait timeout for WAL segment archiving\n"));
332-
// printf(_(" -S, --slot=SLOTNAME replication slot to use\n"));
333-
// printf(_(" --backup-pg-log backup of pg_log directory\n"));
334-
// printf(_(" -j, --threads=NUM number of parallel threads\n"));
335-
// printf(_(" --progress show progress\n"));
336-
// printf(_("\nRestore options:\n"));
337-
// printf(_(" --time time stamp up to which recovery will proceed\n"));
338-
// printf(_(" --xid transaction ID up to which recovery will proceed\n"));
339-
// printf(_(" --inclusive whether we stop just after the recovery target\n"));
340-
// printf(_(" --timeline recovering into a particular timeline\n"));
341-
// printf(_(" -T, --tablespace-mapping=OLDDIR=NEWDIR\n"));
342-
// printf(_(" relocate the tablespace in directory OLDDIR to NEWDIR\n"));
343-
// printf(_(" -j, --threads=NUM number of parallel threads\n"));
344-
// printf(_(" --progress show progress\n"));
345-
// printf(_("\nDelete options:\n"));
346-
// printf(_(" --wal remove unnecessary wal files\n"));
347-
// printf(_("\nRetention options:\n"));
348-
// printf(_(" --redundancy specifies how many full backups purge command should keep\n"));
349-
// printf(_(" --window specifies the number of days of recoverability\n"));
350-
}
351-
352281
static void
353282
opt_backup_mode(pgut_option *opt, const char *arg)
354283
{

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy