@@ -9,7 +9,7 @@ def initialize(stdout:, stderr:)
99 end
1010
1111 def run ( args )
12- available_commands = %w[ build ]
12+ available_commands = %w[ build pack ]
1313 parser =
1414 OptionParser . new do |opts |
1515 opts . banner = <<~USAGE
@@ -32,6 +32,8 @@ def run(args)
3232 case command
3333 when "build"
3434 build ( args )
35+ when "pack"
36+ pack ( args )
3537 else
3638 @stderr . puts parser
3739 exit
@@ -141,6 +143,11 @@ def build(args)
141143 end
142144 end
143145
146+ def pack ( args )
147+ self . require_extension
148+ RubyWasmExt ::WasiVfs . run_cli ( [ $0, "pack" , *args ] )
149+ end
150+
144151 private
145152
146153 def build_config ( options )
@@ -180,13 +187,7 @@ def do_print_ruby_cache_key(packager)
180187 end
181188
182189 def do_build ( executor , tmpdir , packager , options )
183- # Tries to require the extension for the given Ruby version first
184- begin
185- RUBY_VERSION =~ /(\d +\. \d +)/
186- require_relative "#{ Regexp . last_match ( 1 ) } /ruby_wasm.so"
187- rescue LoadError
188- require_relative "ruby_wasm.so"
189- end
190+ self . require_extension
190191 wasm_bytes = packager . package ( executor , tmpdir , options )
191192 RubyWasm . logger . info "Size: #{ SizeFormatter . format ( wasm_bytes . size ) } "
192193 case options [ :output ]
@@ -197,5 +198,15 @@ def do_build(executor, tmpdir, packager, options)
197198 RubyWasm . logger . debug "Wrote #{ options [ :output ] } "
198199 end
199200 end
201+
202+ def require_extension
203+ # Tries to require the extension for the given Ruby version first
204+ begin
205+ RUBY_VERSION =~ /(\d +\. \d +)/
206+ require_relative "#{ Regexp . last_match ( 1 ) } /ruby_wasm.so"
207+ rescue LoadError
208+ require_relative "ruby_wasm.so"
209+ end
210+ end
200211 end
201212end
0 commit comments