diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-27 01:59:08 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-27 01:59:08 +0000 |
commit | be27efdb83aadd82f0d7573f5b547f57cad472f5 (patch) | |
tree | b55148b0985f3aa854bfe9949bb571f178a5c256 | |
parent | d678c274aa747323846245ecc8225bb7ee1de04f (diff) |
dumper.rb: stop getting --destdir option value
via current directory. It's kind of a global state and fragile to
implementation changes in other places, and how the `Dir.getwd` is set
is not obvious from just reading around `RubyVM::Dumper#initialize` if
it depends on the global state.
tool/ruby_vm/controllers/application_controller.rb: explicitly pass
destdir to RubyVM::Dumper.
tool/ruby_vm/scripts/insns2vm.rb: explicitly pass destdir parsed from
optparse.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | tool/ruby_vm/controllers/application_controller.rb | 5 | ||||
-rw-r--r-- | tool/ruby_vm/helpers/dumper.rb | 4 | ||||
-rw-r--r-- | tool/ruby_vm/scripts/insns2vm.rb | 10 |
3 files changed, 10 insertions, 9 deletions
diff --git a/tool/ruby_vm/controllers/application_controller.rb b/tool/ruby_vm/controllers/application_controller.rb index bb86873d25..65783513e7 100644 --- a/tool/ruby_vm/controllers/application_controller.rb +++ b/tool/ruby_vm/controllers/application_controller.rb @@ -16,9 +16,10 @@ require_relative '../models/typemap' require_relative '../loaders/vm_opts_h' class ApplicationController - def generate i + def generate i, destdir path = Pathname.new i - dumper = RubyVM::Dumper.new i + dst = Pathname.new(destdir).join(i) + dumper = RubyVM::Dumper.new dst return [path, dumper] end end diff --git a/tool/ruby_vm/helpers/dumper.rb b/tool/ruby_vm/helpers/dumper.rb index 2d6bb269f6..b622b898b9 100644 --- a/tool/ruby_vm/helpers/dumper.rb +++ b/tool/ruby_vm/helpers/dumper.rb @@ -80,11 +80,9 @@ class RubyVM::Dumper . join end - def initialize path + def initialize dst @erb = {} @empty = new_binding - dst = Pathname.new Dir.getwd - dst += path @file = cstr dst.realdirpath.to_path end diff --git a/tool/ruby_vm/scripts/insns2vm.rb b/tool/ruby_vm/scripts/insns2vm.rb index f76ba2322f..a04394ab27 100644 --- a/tool/ruby_vm/scripts/insns2vm.rb +++ b/tool/ruby_vm/scripts/insns2vm.rb @@ -14,13 +14,14 @@ require 'optparse' require_relative '../controllers/application_controller.rb' def router argv - targets = generate_parser.parse argv + options = { destdir: Dir.getwd } + targets = generate_parser(options).parse argv return targets.map do |i| - next ApplicationController.new.generate i + next ApplicationController.new.generate i, options[:destdir] end end -def generate_parser +def generate_parser(options) OptionParser.new do |this| this.on "-I", "--srcdir=DIR", <<-'end' Historically this option has been passed to the script. This is @@ -78,7 +79,8 @@ def generate_parser THIS IS THE ONLY OPTION THAT WORKS today. Change destination directory from the current working directory to the given path. begin - Dir.chdir dir + raise "directory was not found in '#{dir}'" unless Dir.eixst?(dir) + options[:destdir] = dir end this.on "-V", "--[no-]verbose", <<-'end' |