lib/opal/util.rb
# frozen_string_literal: true require 'open3' module Opal module Util extend self ExitStatusError = Class.new(StandardError) # Used for uglifying source to minify. # # Opal::Util.uglify("javascript contents") # # @param str [String] string to minify # @return [String] def uglify(source, mangle: false) sh "#{'ruby ' if Gem.win_platform?}bin/yarn -s run terser -c #{'-m' if mangle}", data: source end # Gzip code to check file size. def gzip(source) sh 'gzip -f', data: source end private def sh(command, data:) out, _err, status = Open3.capture3(command, stdin_data: data) raise ExitStatusError, "exited with status #{status.exitstatus}" unless status.success? out end end end