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
This commit is contained in:
k0kubun 2018-01-27 01:59:08 +00:00
Родитель d678c274aa
Коммит be27efdb83
3 изменённых файлов: 10 добавлений и 9 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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'