diff options
| -rw-r--r-- | default.bld | 15 | ||||
| -rw-r--r-- | src/options.cpp | 19 | ||||
| -rw-r--r-- | src/options.h | 3 |
3 files changed, 32 insertions, 5 deletions
diff --git a/default.bld b/default.bld index 5c3d9b1..572e992 100644 --- a/default.bld +++ b/default.bld | |||
| @@ -1,19 +1,26 @@ | |||
| 1 | 1 | ||
| 2 | action "default" | ||
| 3 | { | ||
| 4 | build: ["src/version.h", "stage"]; | ||
| 5 | } | ||
| 6 | |||
| 2 | target "src/version.h" | 7 | target "src/version.h" |
| 3 | { | 8 | { |
| 4 | requires ".git"; | 9 | input ".git"; |
| 5 | profile "build" | 10 | profile "build" |
| 6 | { | 11 | { |
| 7 | fh = open("src/version.h.tmp"); | 12 | fh = open("src/version.h.tmp", "w"); |
| 8 | fh.write( | 13 | fh.write( |
| 9 | "#ifndef VERSION_H\n" | 14 | "#ifndef VERSION_H\n" |
| 10 | "#define VERSION_H\n" | 15 | "#define VERSION_H\n" |
| 11 | "\n" | 16 | "\n" |
| 17 | "#define VERSION \"$(git describe --abbrev=0)\"\n" | ||
| 12 | "#define FULLVER \"$(git describe)\"\n" | 18 | "#define FULLVER \"$(git describe)\"\n" |
| 19 | "#define SHAVER \"$(git log -n1 --pretty=format:%H)\"\n" | ||
| 13 | "\n" | 20 | "\n" |
| 14 | "#endif"); | 21 | "#endif"); |
| 15 | fh.close(); | 22 | fh.close(); |
| 16 | if "$(cmp src/version.h.tmp src/version.h)" == "" then | 23 | if "$(cmp src/version.h.tmp src/version.h 2>&1)" == "" then |
| 17 | { | 24 | { |
| 18 | execute("rm src/version.h.tmp"); | 25 | execute("rm src/version.h.tmp"); |
| 19 | } | 26 | } |
| @@ -28,7 +35,7 @@ CC="g++"; | |||
| 28 | target "stage" | 35 | target "stage" |
| 29 | { | 36 | { |
| 30 | rule "exe"; | 37 | rule "exe"; |
| 31 | input files("src/*.y", "src/*.l", "src/*.cpp"); | 38 | input files("src/*.y", "src/*.l", "src/*.cpp", "src/version.h"); |
| 32 | 39 | ||
| 33 | CXXFLAGS="-ggdb"; | 40 | CXXFLAGS="-ggdb"; |
| 34 | CFLAGS="-ggdb"; | 41 | CFLAGS="-ggdb"; |
diff --git a/src/options.cpp b/src/options.cpp index 7953add..aa964d2 100644 --- a/src/options.cpp +++ b/src/options.cpp | |||
| @@ -1,7 +1,12 @@ | |||
| 1 | #include "options.h" | 1 | #include "options.h" |
| 2 | #include "version.h" | 2 | #include "version.h" |
| 3 | 3 | ||
| 4 | #include <stdlib.h> | ||
| 5 | |||
| 4 | #include <bu/optparser.h> | 6 | #include <bu/optparser.h> |
| 7 | #include <bu/sio.h> | ||
| 8 | |||
| 9 | using namespace Bu; | ||
| 5 | 10 | ||
| 6 | Options::Options() | 11 | Options::Options() |
| 7 | { | 12 | { |
| @@ -15,11 +20,23 @@ void Options::parse( int argc, char *argv[] ) | |||
| 15 | { | 20 | { |
| 16 | Bu::OptParser opt; | 21 | Bu::OptParser opt; |
| 17 | 22 | ||
| 18 | opt.addHelpBanner("STAGE v" FULLVER | 23 | opt.addHelpBanner("STAGE v" VERSION |
| 19 | " - Simple, Textual, Adventure Game Environment"); | 24 | " - Simple, Textual, Adventure Game Environment"); |
| 20 | opt.addHelpBanner("usage: " + Bu::String(argv[0]) + | 25 | opt.addHelpBanner("usage: " + Bu::String(argv[0]) + |
| 21 | " [options] <filename>\n"); | 26 | " [options] <filename>\n"); |
| 27 | opt.addOption( Bu::slot( this, &Options::version ), Bu::String("version"), Bu::String("Show the version info.") ); | ||
| 22 | opt.addHelpOption('h', "help"); | 28 | opt.addHelpOption('h', "help"); |
| 23 | opt.parse( argc, argv ); | 29 | opt.parse( argc, argv ); |
| 24 | } | 30 | } |
| 25 | 31 | ||
| 32 | int Options::version( Bu::StrArray aArgs ) | ||
| 33 | { | ||
| 34 | sio << "STAGE v" VERSION " - Simple, Textual, Adventure Game Environment." | ||
| 35 | << sio.nl; | ||
| 36 | sio << "Full version: " FULLVER << sio.nl; | ||
| 37 | sio << "Commit id: " SHAVER << sio.nl; | ||
| 38 | sio << sio.nl; | ||
| 39 | exit( 0 ); | ||
| 40 | return 0; | ||
| 41 | } | ||
| 42 | |||
diff --git a/src/options.h b/src/options.h index 42caa53..7fe2633 100644 --- a/src/options.h +++ b/src/options.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <bu/singleton.h> | 4 | #include <bu/singleton.h> |
| 5 | #include <bu/string.h> | 5 | #include <bu/string.h> |
| 6 | #include <bu/array.h> | ||
| 6 | 7 | ||
| 7 | class Options : public Bu::Singleton<Options> | 8 | class Options : public Bu::Singleton<Options> |
| 8 | { | 9 | { |
| @@ -15,6 +16,8 @@ public: | |||
| 15 | void parse( int argc, char *argv[] ); | 16 | void parse( int argc, char *argv[] ); |
| 16 | 17 | ||
| 17 | Bu::String sFile; | 18 | Bu::String sFile; |
| 19 | |||
| 20 | int version( Bu::Array<Bu::String> aArgs ); | ||
| 18 | }; | 21 | }; |
| 19 | 22 | ||
| 20 | #endif | 23 | #endif |
