зеркало из https://github.com/github/ruby.git
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:
Родитель
d678c274aa
Коммит
be27efdb83
|
@ -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'
|
||||
|
|
Загрузка…
Ссылка в новой задаче