efl/src/bin/edbus/client.c

82 lines
2.1 KiB
C
Raw Normal View History

#include "codegen.h"
static const Ecore_Getopt optdesc = {
"edbus_codegen",
"%prog [options] <file.xml>",
"1.0",
"(C) 2012 - The Enlightenment Project",
"BSD",
"Generate DBUS code, making write DBus client applications easy\n",
0,
{
ECORE_GETOPT_STORE_STR('p', "prefix", "The prefix for the generated code."),
ECORE_GETOPT_STORE_STR('i', "interface", "To generate code of only one interface of xml."),
ECORE_GETOPT_STORE_STR('o', "output file name", "The name of output files, only used if a interface is selected."),
ECORE_GETOPT_LICENSE('L', "license"),
ECORE_GETOPT_COPYRIGHT('C', "copyright"),
ECORE_GETOPT_VERSION('V', "version"),
ECORE_GETOPT_HELP('h', "help"),
ECORE_GETOPT_SENTINEL
}
};
int
main(int argc, char **argv)
{
char *xml_buf = NULL;
DBus_Object *obj = NULL;
char *prefix = NULL, *interface = NULL, *output = NULL;
Eina_Bool quit_option = EINA_FALSE;
int arg_index;
Ecore_Getopt_Value values[] = {
ECORE_GETOPT_VALUE_STR(prefix),
ECORE_GETOPT_VALUE_STR(interface),
ECORE_GETOPT_VALUE_STR(output),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_BOOL(quit_option),
ECORE_GETOPT_VALUE_NONE
};
eina_init();
arg_index = ecore_getopt_parse(&optdesc, values, argc, argv);
if (arg_index == -1)
{
printf("Error: parsing arguments.\n");
return -1;
}
if (quit_option)
return 0;
if (argc <= arg_index)
{
printf("Error: Missing file name.\n");
return -1;
}
if (!file_read(argv[arg_index], &xml_buf))
{
printf("Error reading file.\n");
goto end;
}
if (!eina_simple_xml_parse(xml_buf, strlen(xml_buf), EINA_TRUE,
parser, &obj))
{
printf("Error: could not parse XML\n");
goto end;
}
source_client_generate(obj, prefix, interface, output);
util_h_write();
end:
if (obj)
object_free(obj);
free(xml_buf);
eina_shutdown();
return 0;
}