mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 17:05:11 +00:00
[ADD] Help screen
This commit is contained in:
parent
1f747dd016
commit
4b2ede6a66
3 changed files with 102 additions and 1 deletions
31
src/Main.c
31
src/Main.c
|
|
@ -27,6 +27,27 @@ ParseeUptime(void)
|
||||||
return UtilTsMillis() - start;
|
return UtilTsMillis() - start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const Argument arguments[] =
|
||||||
|
{
|
||||||
|
#define Argument(c, req, vdesc, desc) \
|
||||||
|
{ \
|
||||||
|
.end = false, \
|
||||||
|
.argument = c, .value_req = req, \
|
||||||
|
.value_descr = vdesc, \
|
||||||
|
.description = desc \
|
||||||
|
},
|
||||||
|
|
||||||
|
Argument('H', true, "number", "Sets the number of HTTP threads")
|
||||||
|
Argument('J', true, "number", "Sets the number of XMPP threads")
|
||||||
|
|
||||||
|
Argument('g',false,NULL,"Generates a parsee.yaml AS file before exiting")
|
||||||
|
Argument('v',false,NULL,"Forces Parsee to print in a more verbose fashion")
|
||||||
|
Argument('h',false,NULL,"Generates an help screen(this one!)")
|
||||||
|
|
||||||
|
{ .end = true }
|
||||||
|
#undef Argument
|
||||||
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
Main(Array *args, HashMap *env)
|
Main(Array *args, HashMap *env)
|
||||||
{
|
{
|
||||||
|
|
@ -51,6 +72,7 @@ Main(Array *args, HashMap *env)
|
||||||
|
|
||||||
{
|
{
|
||||||
ArgParseState state;
|
ArgParseState state;
|
||||||
|
char *opts = ParseeGenerateGetopt(arguments);
|
||||||
int flag;
|
int flag;
|
||||||
int xmpp = 8;
|
int xmpp = 8;
|
||||||
int http = 8;
|
int http = 8;
|
||||||
|
|
@ -58,10 +80,14 @@ Main(Array *args, HashMap *env)
|
||||||
ArgParseStateInit(&state);
|
ArgParseStateInit(&state);
|
||||||
/* TODO: Have a smarter way of generating the arg table
|
/* TODO: Have a smarter way of generating the arg table
|
||||||
* (with a list of structs, with a description and everything) */
|
* (with a list of structs, with a description and everything) */
|
||||||
while ((flag = ArgParse(&state, args, "vgH:J:")) != -1)
|
while ((flag = ArgParse(&state, args, opts)) != -1)
|
||||||
{
|
{
|
||||||
switch (flag)
|
switch (flag)
|
||||||
{
|
{
|
||||||
|
case 'h':
|
||||||
|
ParseeGenerateHelp(arguments);
|
||||||
|
Free(opts);
|
||||||
|
goto end;
|
||||||
case 'H':
|
case 'H':
|
||||||
http = strtol(state.optArg, NULL, 10);
|
http = strtol(state.optArg, NULL, 10);
|
||||||
break;
|
break;
|
||||||
|
|
@ -74,15 +100,18 @@ Main(Array *args, HashMap *env)
|
||||||
yaml = StreamOpen("parsee.yaml", "w");
|
yaml = StreamOpen("parsee.yaml", "w");
|
||||||
ParseeExportConfigYAML(yaml);
|
ParseeExportConfigYAML(yaml);
|
||||||
StreamClose(yaml);
|
StreamClose(yaml);
|
||||||
|
Free(opts);
|
||||||
goto end;
|
goto end;
|
||||||
case 'v':
|
case 'v':
|
||||||
LogConfigLevelSet(LogConfigGlobal(), LOG_DEBUG);
|
LogConfigLevelSet(LogConfigGlobal(), LOG_DEBUG);
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
Log(LOG_ERR, "INVALID ARGUMENT GIVEN");
|
Log(LOG_ERR, "INVALID ARGUMENT GIVEN");
|
||||||
|
Free(opts);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Free(opts);
|
||||||
ParseeSetThreads(xmpp, http);
|
ParseeSetThreads(xmpp, http);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -875,3 +875,52 @@ ParseeGenerateMTO(char *common_id)
|
||||||
|
|
||||||
return matrix_to;
|
return matrix_to;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ParseeGenerateHelp(const Argument *list)
|
||||||
|
{
|
||||||
|
if (!list)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!list->end)
|
||||||
|
{
|
||||||
|
char *str = list->value_req ?
|
||||||
|
StrConcat(3, " [", list->value_descr, "]") :
|
||||||
|
StrDuplicate("");
|
||||||
|
Log(LOG_INFO, "-%c%s", list->argument, str);
|
||||||
|
LogConfigIndent(LogConfigGlobal());
|
||||||
|
Log(LOG_INFO, "%s", list->description);
|
||||||
|
LogConfigUnindent(LogConfigGlobal());
|
||||||
|
list++;
|
||||||
|
|
||||||
|
Free(str);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char *
|
||||||
|
ParseeGenerateGetopt(const Argument *list)
|
||||||
|
{
|
||||||
|
char *ret = NULL, *tmp = NULL;
|
||||||
|
if (!list)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!list->end)
|
||||||
|
{
|
||||||
|
char buffer[3] = {
|
||||||
|
list->argument, list->value_req ? ':' : '\0',
|
||||||
|
'\0'
|
||||||
|
};
|
||||||
|
|
||||||
|
tmp = ret;
|
||||||
|
ret = StrConcat(2, ret, buffer);
|
||||||
|
Free(tmp);
|
||||||
|
|
||||||
|
list++;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,16 @@ typedef struct ParseeData {
|
||||||
char *id;
|
char *id;
|
||||||
} ParseeData;
|
} ParseeData;
|
||||||
|
|
||||||
|
typedef struct Argument {
|
||||||
|
bool end;
|
||||||
|
|
||||||
|
char argument;
|
||||||
|
bool value_req;
|
||||||
|
|
||||||
|
const char *value_descr;
|
||||||
|
const char *description;
|
||||||
|
} Argument;
|
||||||
|
|
||||||
#define GrabString(obj, ...) JsonValueAsString(JsonGet(obj, __VA_ARGS__))
|
#define GrabString(obj, ...) JsonValueAsString(JsonGet(obj, __VA_ARGS__))
|
||||||
#define GrabInteger(obj, ...) JsonValueAsInteger(JsonGet(obj, __VA_ARGS__))
|
#define GrabInteger(obj, ...) JsonValueAsInteger(JsonGet(obj, __VA_ARGS__))
|
||||||
#define GrabBoolean(obj, ...) JsonValueAsBoolean(JsonGet(obj, __VA_ARGS__))
|
#define GrabBoolean(obj, ...) JsonValueAsBoolean(JsonGet(obj, __VA_ARGS__))
|
||||||
|
|
@ -76,6 +86,19 @@ typedef struct ParseeData {
|
||||||
#define MB * 1024 KB
|
#define MB * 1024 KB
|
||||||
#define GB * 1024 MB
|
#define GB * 1024 MB
|
||||||
|
|
||||||
|
/** Generates a valid, getopt-style argument list from a end-terminated
|
||||||
|
* argument list.
|
||||||
|
* ------------
|
||||||
|
* Returns: a valid string to be used in getopt and the likes[HEAP]
|
||||||
|
* Modifies: NOTHING */
|
||||||
|
extern char * ParseeGenerateGetopt(const Argument *list);
|
||||||
|
|
||||||
|
/** Generates a help screen to the logger.
|
||||||
|
* ------------
|
||||||
|
* Returns: NOTHING
|
||||||
|
* Modifies: NOTHING */
|
||||||
|
extern void ParseeGenerateHelp(const Argument *list);
|
||||||
|
|
||||||
/* Initialises a Parsee config from scratch, and writes to it
|
/* Initialises a Parsee config from scratch, and writes to it
|
||||||
* as JSON in the CWD. */
|
* as JSON in the CWD. */
|
||||||
extern void ParseeConfigInit(void);
|
extern void ParseeConfigInit(void);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue