82 // Intepret command-line parameters: |
83 // Intepret command-line parameters: |
83 // -l: list commands |
84 // -l: list commands |
84 // I guess there should be a better way to do this. |
85 // I guess there should be a better way to do this. |
85 if (argc == 2 && !strcmp (argv[1], "-l")) |
86 if (argc == 2 && !strcmp (argv[1], "-l")) |
86 { |
87 { |
87 init_commands(); |
|
88 printf ("Begin list of commands:\n"); |
88 printf ("Begin list of commands:\n"); |
89 printf ("------------------------------------------------------\n"); |
89 printf ("------------------------------------------------------\n"); |
90 |
90 |
91 for (command_info* comm : get_commands()) |
91 for (command_info* comm : get_commands()) |
92 print ("%1\n", get_command_signature (comm)); |
92 print ("%1\n", get_command_signature (comm)); |
97 } |
97 } |
98 |
98 |
99 // Print header |
99 // Print header |
100 string header; |
100 string header; |
101 string headerline; |
101 string headerline; |
102 header = format ("%1 version %2.%3", APPNAME, VERSION_MAJOR, VERSION_MINOR); |
102 header = format (APPNAME " version %1", get_version_string (e_long_form)); |
103 |
103 |
104 for (int i = 0; i < (header.len() / 2) - 1; ++i) |
104 #ifdef DEBUG |
|
105 header += " (debug build)"; |
|
106 #endif |
|
107 |
|
108 for (int i = 0; i < header.len() / 2; ++i) |
105 headerline += "-="; |
109 headerline += "-="; |
106 |
110 |
107 headerline += '-'; |
111 headerline += '-'; |
108 print ("%1\n%2\n", header, headerline); |
112 print ("%2\n\n%1\n\n%2\n\n", header, headerline); |
109 |
113 |
110 if (argc < 2) |
114 if (argc < 2) |
111 { |
115 { |
112 fprintf (stderr, "usage: %s <infile> [outfile] # compiles botscript\n", argv[0]); |
116 fprintf (stderr, "usage: %s <infile> [outfile] # compiles botscript\n", argv[0]); |
113 fprintf (stderr, " %s -l # lists commands\n", argv[0]); |
117 fprintf (stderr, " %s -l # lists commands\n", argv[0]); |
254 // Inverse operation - type name by value |
253 // Inverse operation - type name by value |
255 string GetTypeName (type_e type) |
254 string GetTypeName (type_e type) |
256 { |
255 { |
257 switch (type) |
256 switch (type) |
258 { |
257 { |
259 case TYPE_INT: return "int"; break; |
258 case TYPE_INT: return "int"; break; |
260 |
259 case TYPE_STRING: return "str"; break; |
261 case TYPE_STRING: return "str"; break; |
260 case TYPE_VOID: return "void"; break; |
262 |
261 case TYPE_BOOL: return "bool"; break; |
263 case TYPE_VOID: return "void"; break; |
262 case TYPE_UNKNOWN: return "???"; break; |
264 |
|
265 case TYPE_BOOL: return "bool"; break; |
|
266 |
|
267 case TYPE_UNKNOWN: return "???"; break; |
|
268 } |
263 } |
269 |
264 |
270 return ""; |
265 return ""; |
271 } |
266 } |
|
267 // ============================================================================= |
|
268 // |
|
269 |
|
270 string make_version_string (int major, int minor, int patch) |
|
271 { |
|
272 string ver = format ("%1.%2", major, minor); |
|
273 |
|
274 if (patch != 0) |
|
275 { |
|
276 ver += "."; |
|
277 ver += patch; |
|
278 } |
|
279 |
|
280 return ver; |
|
281 } |
|
282 |
|
283 // ============================================================================= |
|
284 // |
|
285 string get_version_string (form_length_e len) |
|
286 { |
|
287 string tag (GIT_DESCRIPTION); |
|
288 string version = tag; |
|
289 |
|
290 if (tag.ends_with ("-pre") && len == e_long_form) |
|
291 version += "-" + string (GIT_HASH).mid (0, 8); |
|
292 |
|
293 return version; |
|
294 } |