src/main.cc

changeset 82
841562f5a32f
parent 79
2425fa6a4f21
child 85
264a61e9eba0
--- a/src/main.cc	Sat Jan 18 02:11:45 2014 +0200
+++ b/src/main.cc	Sun Jan 19 20:16:00 2014 +0200
@@ -39,6 +39,7 @@
 #include "object_writer.h"
 #include "parser.h"
 #include "lexer.h"
+#include "gitinfo.h"
 
 // List of keywords
 const string_list g_Keywords =
@@ -84,7 +85,6 @@
 		// I guess there should be a better way to do this.
 		if (argc == 2 && !strcmp (argv[1], "-l"))
 		{
-			init_commands();
 			printf ("Begin list of commands:\n");
 			printf ("------------------------------------------------------\n");
 
@@ -99,13 +99,17 @@
 		// Print header
 		string header;
 		string headerline;
-		header = format ("%1 version %2.%3", APPNAME, VERSION_MAJOR, VERSION_MINOR);
+		header = format (APPNAME " version %1", get_version_string (e_long_form));
 
-		for (int i = 0; i < (header.len() / 2) - 1; ++i)
+#ifdef DEBUG
+		header += " (debug build)";
+#endif
+
+		for (int i = 0; i < header.len() / 2; ++i)
 			headerline += "-=";
 
 		headerline += '-';
-		print ("%1\n%2\n", header, headerline);
+		print ("%2\n\n%1\n\n%2\n\n", header, headerline);
 
 		if (argc < 2)
 		{
@@ -151,11 +155,6 @@
 			}
 		}
 
-		// Read definitions
-		printf ("Reading definitions...\n");
-		init_events();
-		init_commands();
-
 		// Prepare reader and writer
 		botscript_parser* r = new botscript_parser;
 		object_writer* w = new object_writer;
@@ -256,16 +255,40 @@
 {
 	switch (type)
 	{
-	case TYPE_INT: return "int"; break;
-
-	case TYPE_STRING: return "str"; break;
-
-	case TYPE_VOID: return "void"; break;
-
-	case TYPE_BOOL: return "bool"; break;
-
-	case TYPE_UNKNOWN: return "???"; break;
+		case TYPE_INT: return "int"; break;
+		case TYPE_STRING: return "str"; break;
+		case TYPE_VOID: return "void"; break;
+		case TYPE_BOOL: return "bool"; break;
+		case TYPE_UNKNOWN: return "???"; break;
 	}
 
 	return "";
 }
+// =============================================================================
+//
+
+string make_version_string (int major, int minor, int patch)
+{
+	string ver = format ("%1.%2", major, minor);
+
+	if (patch != 0)
+	{
+		ver += ".";
+		ver += patch;
+	}
+
+	return ver;
+}
+
+// =============================================================================
+//
+string get_version_string (form_length_e len)
+{
+	string tag (GIT_DESCRIPTION);
+	string version = tag;
+
+	if (tag.ends_with ("-pre") && len == e_long_form)
+		version += "-" + string (GIT_HASH).mid (0, 8);
+
+	return version;
+}
\ No newline at end of file

mercurial