implement usage string generation
This commit is contained in:
parent
5acd671462
commit
970dd3b2f7
2 changed files with 250 additions and 20 deletions
74
test/test.c
74
test/test.c
|
@ -1,13 +1,38 @@
|
|||
#define READARG_IMPLEMENTATION
|
||||
#define READARG_DEBUG
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../readarg.h"
|
||||
|
||||
#include <stdio.h>
|
||||
enum opt
|
||||
{
|
||||
OPT_HELP,
|
||||
OPT_VERSION,
|
||||
};
|
||||
|
||||
static int write_callback(void *ctx, const char *buf, size_t len);
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct readarg_opt opts[] = {
|
||||
[OPT_HELP] = {
|
||||
.names = {
|
||||
[READARG_FORM_LONG] = READARG_STRINGS("help"),
|
||||
},
|
||||
.arg.bounds.val = {
|
||||
1,
|
||||
},
|
||||
},
|
||||
[OPT_VERSION] = {
|
||||
.names = {
|
||||
[READARG_FORM_SHORT] = READARG_STRINGS("V"),
|
||||
[READARG_FORM_LONG] = READARG_STRINGS("version"),
|
||||
},
|
||||
.arg.bounds.val = {
|
||||
1,
|
||||
},
|
||||
},
|
||||
{
|
||||
.names = {
|
||||
[READARG_FORM_SHORT] = READARG_STRINGS("e", "x"),
|
||||
|
@ -64,23 +89,6 @@ int main(int argc, char **argv)
|
|||
},
|
||||
.arg.bounds.inf = 1,
|
||||
},
|
||||
{
|
||||
.names = {
|
||||
[READARG_FORM_LONG] = READARG_STRINGS("help"),
|
||||
},
|
||||
.arg.bounds.val = {
|
||||
1,
|
||||
},
|
||||
},
|
||||
{
|
||||
.names = {
|
||||
[READARG_FORM_SHORT] = READARG_STRINGS("V"),
|
||||
[READARG_FORM_LONG] = READARG_STRINGS("version"),
|
||||
},
|
||||
.arg.bounds.val = {
|
||||
1,
|
||||
},
|
||||
},
|
||||
{
|
||||
0,
|
||||
},
|
||||
|
@ -121,17 +129,37 @@ int main(int argc, char **argv)
|
|||
opers,
|
||||
(struct readarg_view_strings){
|
||||
.strings = (const char **)argv + 1,
|
||||
.len = argc - 1});
|
||||
.len = argc - 1,
|
||||
});
|
||||
|
||||
while (readarg_parse(&rp))
|
||||
;
|
||||
|
||||
fprintf(stderr, "error: %d\n", rp.error);
|
||||
const char *progname = argv[0] == NULL ? "test" : argv[0];
|
||||
struct readarg_helpgen_writer writer = {
|
||||
.write = write_callback,
|
||||
.ctx = NULL,
|
||||
};
|
||||
|
||||
if (rp.error != READARG_ESUCCESS)
|
||||
{
|
||||
fprintf(stderr, "Error: %d\n", rp.error);
|
||||
readarg_helpgen_put_usage(&rp, &writer, progname, "Usage");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (rp.opts[OPT_HELP].arg.val.len >= 1)
|
||||
{
|
||||
readarg_helpgen_put_usage(&rp, &writer, progname, "Usage");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (rp.opts[OPT_VERSION].arg.val.len >= 1)
|
||||
{
|
||||
printf("0.0.0\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("opt:\n");
|
||||
{
|
||||
struct readarg_opt *curr = rp.opts;
|
||||
|
@ -176,3 +204,9 @@ int main(int argc, char **argv)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int write_callback(void *ctx, const char *buf, size_t len)
|
||||
{
|
||||
(void)ctx;
|
||||
return fwrite(buf, 1, len, stderr) == len;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue