mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add -d option for mruby and mirb.
This commit is contained in:
@@ -10,3 +10,10 @@ assert('regression for #1563') do
|
||||
o, s = Open3.capture2('bin/mirb', :stdin_data => "a=1;b=2;c=3\nb\nc")
|
||||
assert_true o.include?('=> 3')
|
||||
end
|
||||
|
||||
assert('mirb -d option') do
|
||||
o, s = Open3.capture2('bin/mirb', :stdin_data => "p $DEBUG\n")
|
||||
assert_true o.include?('=> false')
|
||||
o, s = Open3.capture2('bin/mirb -d', :stdin_data => "p $DEBUG\n")
|
||||
assert_true o.include?('=> true')
|
||||
end
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
#include <mruby/proc.h>
|
||||
#include <mruby/compile.h>
|
||||
#include <mruby/string.h>
|
||||
#include <mruby/variable.h>
|
||||
|
||||
#ifdef ENABLE_READLINE
|
||||
|
||||
@@ -219,6 +220,7 @@ is_code_block_open(struct mrb_parser_state *parser)
|
||||
struct _args {
|
||||
FILE *rfp;
|
||||
mrb_bool verbose : 1;
|
||||
mrb_bool debug : 1;
|
||||
int argc;
|
||||
char** argv;
|
||||
};
|
||||
@@ -228,6 +230,7 @@ usage(const char *name)
|
||||
{
|
||||
static const char *const usage_msg[] = {
|
||||
"switches:",
|
||||
"-d Set $DEBUG to true (same as `mruby -d`)"
|
||||
"-v print version number, then run in verbose mode",
|
||||
"--verbose run in verbose mode",
|
||||
"--version print the version",
|
||||
@@ -254,6 +257,9 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
|
||||
|
||||
item = argv[0] + 1;
|
||||
switch (*item++) {
|
||||
case 'd':
|
||||
args->debug = TRUE;
|
||||
break;
|
||||
case 'v':
|
||||
if (!args->verbose) mrb_show_version(mrb);
|
||||
args->verbose = TRUE;
|
||||
@@ -413,6 +419,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
mrb_define_global_const(mrb, "ARGV", ARGV);
|
||||
mrb_gv_set(mrb, mrb_intern_lit(mrb, "$DEBUG"), mrb_bool_value(args.debug));
|
||||
|
||||
#ifdef ENABLE_READLINE
|
||||
history_path = get_history_path(mrb);
|
||||
|
||||
@@ -58,3 +58,10 @@ RUBY
|
||||
assert_equal "NilClass", `#{cmd('mruby')} #{script.path}`
|
||||
assert_equal 0, $?.exitstatus
|
||||
end
|
||||
|
||||
assert('mruby -d option') do
|
||||
o = `#{cmd('mruby')} -e #{shellquote('p $DEBUG')}>&1`
|
||||
assert_equal o, "false\n"
|
||||
o = `#{cmd('mruby')} -d -e #{shellquote('p $DEBUG')}>&1`
|
||||
assert_equal o, "true\n"
|
||||
end
|
||||
|
||||
@@ -27,6 +27,7 @@ struct _args {
|
||||
mrb_bool mrbfile : 1;
|
||||
mrb_bool check_syntax : 1;
|
||||
mrb_bool verbose : 1;
|
||||
mrb_bool debug : 1;
|
||||
int argc;
|
||||
char** argv;
|
||||
};
|
||||
@@ -38,6 +39,7 @@ usage(const char *name)
|
||||
"switches:",
|
||||
"-b load and execute RiteBinary (mrb) file",
|
||||
"-c check syntax only",
|
||||
"-d Set debugging flags (set $DEBUG to true)"
|
||||
"-e 'command' one line of script",
|
||||
"-v print version number, then run in verbose mode",
|
||||
"--verbose run in verbose mode",
|
||||
@@ -78,6 +80,9 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
|
||||
case 'c':
|
||||
args->check_syntax = TRUE;
|
||||
break;
|
||||
case 'd':
|
||||
args->debug = TRUE;
|
||||
break;
|
||||
case 'e':
|
||||
if (item[0]) {
|
||||
goto append_cmdline;
|
||||
@@ -199,6 +204,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
mrb_define_global_const(mrb, "ARGV", ARGV);
|
||||
mrb_gv_set(mrb, mrb_intern_lit(mrb, "$DEBUG"), mrb_bool_value(args.debug));
|
||||
|
||||
c = mrbc_context_new(mrb);
|
||||
if (args.verbose)
|
||||
|
||||
Reference in New Issue
Block a user