ruby-changes:49946
From: k0kubun <ko1@a...>
Date: Sat, 27 Jan 2018 10:59:13 +0900 (JST)
Subject: [ruby-changes:49946] k0kubun:r62064 (trunk): dumper.rb: stop getting --destdir option value
k0kubun 2018-01-27 10:59:08 +0900 (Sat, 27 Jan 2018) New Revision: 62064 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=62064 Log: 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. Modified files: trunk/tool/ruby_vm/controllers/application_controller.rb trunk/tool/ruby_vm/helpers/dumper.rb trunk/tool/ruby_vm/scripts/insns2vm.rb Index: tool/ruby_vm/helpers/dumper.rb =================================================================== --- tool/ruby_vm/helpers/dumper.rb (revision 62063) +++ tool/ruby_vm/helpers/dumper.rb (revision 62064) @@ -80,11 +80,9 @@ class RubyVM::Dumper https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/helpers/dumper.rb#L80 . 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 Index: tool/ruby_vm/controllers/application_controller.rb =================================================================== --- tool/ruby_vm/controllers/application_controller.rb (revision 62063) +++ tool/ruby_vm/controllers/application_controller.rb (revision 62064) @@ -16,9 +16,10 @@ require_relative '../models/typemap' https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/controllers/application_controller.rb#L16 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 Index: tool/ruby_vm/scripts/insns2vm.rb =================================================================== --- tool/ruby_vm/scripts/insns2vm.rb (revision 62063) +++ tool/ruby_vm/scripts/insns2vm.rb (revision 62064) @@ -14,13 +14,14 @@ require 'optparse' https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/scripts/insns2vm.rb#L14 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 https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/scripts/insns2vm.rb#L79 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' -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/