summaryrefslogtreecommitdiff
path: root/server/src/macrotool.cc
diff options
context:
space:
mode:
authordeva <deva>2009-07-06 11:01:35 +0000
committerdeva <deva>2009-07-06 11:01:35 +0000
commitce3ee895ae8c893c0202e4cddb068dce9919cd0d (patch)
treee9fb1550e72da7531c65db72f8fd38df90059c16 /server/src/macrotool.cc
parentee93b9e274f3aeb3f4b7b6ba33cf07098fe21d8a (diff)
Added new macro tool binary to the project.
Diffstat (limited to 'server/src/macrotool.cc')
-rw-r--r--server/src/macrotool.cc157
1 files changed, 157 insertions, 0 deletions
diff --git a/server/src/macrotool.cc b/server/src/macrotool.cc
new file mode 100644
index 0000000..46fbc24
--- /dev/null
+++ b/server/src/macrotool.cc
@@ -0,0 +1,157 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ * macrotool.cc
+ *
+ * Mon Jul 6 08:25:28 CEST 2009
+ * Copyright 2009 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+// For ETC
+#include <config.h>
+
+// For getopt_long and friends
+#include <getopt.h>
+
+#include "configurationparser.h"
+#include "configuration.h"
+
+#include "debug.h"
+
+#include "macrotool_dump.h"
+
+static const char version_str[] =
+"Pracro server v" VERSION "\n"
+;
+
+static const char copyright_str[] =
+"Copyright (C) 2006-2009 Bent Bisballe Nyeng - Aasimon.org.\n"
+"This is free software. You may redistribute copies of it under the terms of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+"Written by Bent Bisballe Nyeng (deva@aasimon.org)\n"
+;
+
+static const char usage_str[] =
+"Usage: %s [options] command\n"
+"Options:\n"
+" -c, --config file Read configfile from 'file'\n"
+" -x, --xml-basedir d Use 'd' as basedir for finding template- and macro-files (default "XML").\n"
+" -v, --version Print version information and exit.\n"
+" -h, --help Print this message and exit.\n"
+" -D, --debug ddd Enable debug messages on 'ddd'; see documentation for details\n"
+"\n"
+"Commands:\n"
+" dump entity Dumps 'entity' to screen ('dump help' to see list of entities).\n"
+;
+
+ConfigurationParser *configparser = NULL;
+
+int main(int argc, char *argv[])
+{
+ int c;
+ char *configfile = NULL;
+ char *xml_basedir = NULL;
+ char *debugstr = NULL;
+
+ pracro_debug_init();
+
+ int option_index = 0;
+ while(1) {
+ static struct option long_options[] = {
+ {"config", required_argument, 0, 'c'},
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'v'},
+ {"xml-basedir", required_argument, 0, 'x'},
+ {"debug", required_argument, 0, 'D'},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long (argc, argv, "D:hvc:x:", long_options, &option_index);
+
+ if (c == -1)
+ break;
+
+ switch(c) {
+ case 'c':
+ configfile = strdup(optarg);
+ break;
+
+ case 'x':
+ xml_basedir = strdup(optarg);
+ break;
+
+ case 'D':
+ debugstr = strdup(optarg);
+ break;
+
+ case '?':
+ case 'h':
+ printf(version_str);
+ printf(usage_str, argv[0]);
+ return 0;
+
+ case 'v':
+ printf(version_str);
+ printf(copyright_str);
+ return 0;
+
+ default:
+ break;
+ }
+ }
+
+ if(optind >= argc) {
+ fprintf(stderr, "Missing command\n");
+ printf(usage_str, argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ std::string command = argv[optind];
+
+ if(debugstr) {
+ pracro_debug_parse(debugstr);
+ }
+
+ // Load config
+ if(configfile) configparser = new ConfigurationParser(configfile);
+ else configparser = new ConfigurationParser(ETC"/pracrod.conf");
+
+ if(xml_basedir) {
+ Conf::xml_basedir = xml_basedir;
+ }
+
+ if(command == "dump") {
+ optind++;
+ if(optind >= argc) {
+ fprintf(stderr, "Missing command parameter\n");
+ printf(usage_str, argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ macrotool_dump(argv[optind]);
+ }
+
+ // Clean up
+ if(configfile) free(configfile);
+
+ return 0;
+}