diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common.h (renamed from src/modules.h) | 8 | ||||
-rw-r--r-- | src/main.c | 18 | ||||
-rw-r--r-- | src/options/options.c | 23 | ||||
-rw-r--r-- | src/util/util.h | 2 |
4 files changed, 49 insertions, 2 deletions
diff --git a/src/modules.h b/src/common.h index 69e5900..31ff856 100644 --- a/src/modules.h +++ b/src/common.h @@ -3,6 +3,11 @@ #include <lua.h> +#define HONEY_VERSION_MAJOR 0 +#define HONEY_VERSION_MINOR 0 +#define HONEY_VERSION_PATCH 0 +#define HONEY_VERSION_STR "intermissia [pre-alpha]" + #define HONEY_MODULES \ X(audio) \ X(gl) \ @@ -11,9 +16,10 @@ X(image) \ X(import) \ X(logging) \ + X(nvg) \ X(ode) \ X(util) \ - X(nvg) \ + X(version) \ #define X(module) \ @@ -3,10 +3,11 @@ #include <lualib.h> #include "options/options.h" #include "util/util.h" -#include "modules.h" +#include "common.h" void print_load_error(lua_State *L, const char *script_file, int error_type); +void setup_version(lua_State *L, int honey_tbl); int main(int argc, char **argv) { @@ -69,3 +70,18 @@ void print_load_error(lua_State *L, const char *script_file, int error_type) break; }; } + + +void setup_version(lua_State *L, int honey_tbl) +{ + struct honey_tbl_t tbl[] = { + H_INT("major", HONEY_VERSION_MAJOR), + H_INT("minor", HONEY_VERSION_MINOR), + H_INT("patch", HONEY_VERSION_PATCH), + H_STR("string", HONEY_VERSION_STR), + + H_END + }; + create_table(L, tbl); + lua_setfield(L, honey_tbl, "version"); +} diff --git a/src/options/options.c b/src/options/options.c index 4488837..7ac35c7 100644 --- a/src/options/options.c +++ b/src/options/options.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <cargs.h> +#include <common.h> #include "options.h" static struct cag_option opts[] = { @@ -11,6 +12,13 @@ static struct cag_option opts[] = { .description = "The filename of the main script. (default: main.lua)" }, { + .identifier = 'e', + .access_letters = NULL, + .access_name = "version", + .value_name = NULL, + .description = "Show the honey version" + }, + { .identifier = 'h', .access_letters = "h", .access_name = "help", @@ -29,6 +37,12 @@ void print_help(char *program_name) enum outcomes_t parse_options(struct honey_options *options, int argc, char **argv) { + /* check if we even need to parse at all */ + if (argc == 1) { + print_help(argv[0]); + return EXIT_SUCCESS; + } + /* default values */ options->script_file = "main.lua"; @@ -47,6 +61,15 @@ enum outcomes_t parse_options(struct honey_options *options, int argc, char **ar case 'h': print_help(argv[0]); return EXIT_SUCCESS; + case 'e': + printf( + "honey v%d.%d.%d -- %s\n", + HONEY_VERSION_MAJOR, + HONEY_VERSION_MINOR, + HONEY_VERSION_PATCH, + HONEY_VERSION_STR + ); + return EXIT_SUCCESS; default: return EXIT_FAILURE; } diff --git a/src/util/util.h b/src/util/util.h index ab68330..293397c 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -10,12 +10,14 @@ struct honey_tbl_t { union { lua_Integer integer; lua_CFunction function; + const char *string; } value; }; #define H_INT(k, v) { .key=k, .type=LUA_TNUMBER, .value.integer=v } #define H_ENUM(v) { .key=#v, .type=LUA_TNUMBER, .value.integer=v } #define H_FUNC(k, v) { .key=k, .type=LUA_TFUNCTION, .value.function=v } +#define H_STR(k, v) { .key=k, .type=LUA_TSTRING, .value.string=v } #define H_END { .key=NULL, .type=LUA_TNIL, .value.integer=0 } |