From e0c10d03da422ed603776c136a8e88e6d014263a Mon Sep 17 00:00:00 2001 From: MATSUMOTO Ryosuke Date: Wed, 5 Feb 2014 18:45:09 +0900 Subject: Add pluggable versioning by mruby-version --- mrbgems/default.gembox | 3 +++ mrbgems/mruby-version/mrbgem.rake | 4 ++++ mrbgems/mruby-version/mrblib/version.rb | 5 +++++ mrbgems/mruby-version/src/version.c | 16 ++++++++++++++++ mrbgems/mruby-version/src/version.h | 9 +++++++++ src/print.c | 8 +++++++- 6 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 mrbgems/mruby-version/mrbgem.rake create mode 100644 mrbgems/mruby-version/mrblib/version.rb create mode 100644 mrbgems/mruby-version/src/version.c create mode 100644 mrbgems/mruby-version/src/version.h diff --git a/mrbgems/default.gembox b/mrbgems/default.gembox index 33ee99be0..6fe5c30f4 100644 --- a/mrbgems/default.gembox +++ b/mrbgems/default.gembox @@ -58,4 +58,7 @@ MRuby::GemBox.new do |conf| # Generate mruby command conf.gem :core => "mruby-bin-mruby" + + # Use mruby verison + conf.gem :core => "mruby-version" end diff --git a/mrbgems/mruby-version/mrbgem.rake b/mrbgems/mruby-version/mrbgem.rake new file mode 100644 index 000000000..d7934468f --- /dev/null +++ b/mrbgems/mruby-version/mrbgem.rake @@ -0,0 +1,4 @@ +MRuby::Gem::Specification.new('mruby-version') do |spec| + spec.license = 'MIT' + spec.author = 'mruby developers' +end diff --git a/mrbgems/mruby-version/mrblib/version.rb b/mrbgems/mruby-version/mrblib/version.rb new file mode 100644 index 000000000..d51158382 --- /dev/null +++ b/mrbgems/mruby-version/mrblib/version.rb @@ -0,0 +1,5 @@ +module Kernel + def show_version + "mruby " + MRUBY_VERSION + " (" + MRUBY_RELEASE_DATE + ")\n" + end +end diff --git a/mrbgems/mruby-version/src/version.c b/mrbgems/mruby-version/src/version.c new file mode 100644 index 000000000..b3a6e8b9b --- /dev/null +++ b/mrbgems/mruby-version/src/version.c @@ -0,0 +1,16 @@ +#include "mruby.h" +#include "mruby/variable.h" +#include "version.h" + +void +mrb_mruby_version_gem_init(mrb_state* mrb) +{ + mrb_define_global_const(mrb, "MRUBY_VERSION", mrb_str_new_cstr(mrb, MRUBY_VERSION)); + mrb_define_global_const(mrb, "MRUBY_RELEASE_DATE", mrb_str_new_cstr(mrb, MRUBY_RELEASE_DATE)); +} + +void +mrb_mruby_version_gem_final(mrb_state* mrb) +{ +} + diff --git a/mrbgems/mruby-version/src/version.h b/mrbgems/mruby-version/src/version.h new file mode 100644 index 000000000..00bfa6500 --- /dev/null +++ b/mrbgems/mruby-version/src/version.h @@ -0,0 +1,9 @@ +#define MRUBY_VERSION "v1.0.0" +#define MRUBY_PATCHLEVEL 0 +#define MRUBY_REVISION 0 + +#define MRUBY_RELEASE_DATE "2014-01-31" +#define MRUBY_RELEASE_YEAR 2014 +#define MRUBY_RELEASE_MONTH 1 +#define MRUBY_RELEASE_DAY 31 + diff --git a/src/print.c b/src/print.c index 4675d0e41..678e56d6b 100644 --- a/src/print.c +++ b/src/print.c @@ -6,6 +6,7 @@ #include "mruby.h" #include "mruby/string.h" +#include "mruby/variable.h" static void printstr(mrb_state *mrb, mrb_value obj) @@ -56,7 +57,12 @@ mrb_show_version(mrb_state *mrb) static const char version_msg[] = "mruby - Embeddable Ruby Copyright (c) 2010-2014 mruby developers\n"; mrb_value msg; - msg = mrb_str_new(mrb, version_msg, sizeof(version_msg) - 1); + if (mrb_const_defined(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_VERSION"))) { + msg = mrb_funcall(mrb, mrb_obj_value(mrb->kernel_module), "show_version", 0); + } + else { + msg = mrb_str_new(mrb, version_msg, sizeof(version_msg) - 1); + } printstr(mrb, msg); } -- cgit v1.2.3