lib/opal/cli_runners/server.rb in opal-1.5.1 vs lib/opal/cli_runners/server.rb in opal-1.6.0.alpha1

- old
+ new

@@ -1,7 +1,9 @@ # frozen_string_literal: true +require 'opal/simple_server' + module Opal module CliRunners class Server def self.call(data) runner = new(data) @@ -9,13 +11,12 @@ runner.exit_status end def initialize(data) options = data[:options] || {} - builder = data[:builder] + @builder = data[:builder] - @code = builder.to_s + "\n" + builder.source_map.to_data_uri_comment @argv = data[:argv] || [] @output = data[:output] || $stdout @port = options.fetch(:port, ENV['OPAL_CLI_RUNNERS_SERVER_PORT'] || 3000).to_i @@ -23,21 +24,21 @@ @static_folder = options[:static_folder] || ENV['OPAL_CLI_RUNNERS_SERVER_STATIC_FOLDER'] @static_folder = @static_folder == true ? 'public' : @static_folder @static_folder = File.expand_path(@static_folder) if @static_folder end - attr_reader :output, :port, :server, :static_folder, :code, :argv + attr_reader :output, :port, :server, :static_folder, :builder, :argv def run unless argv.empty? raise ArgumentError, 'Program arguments are not supported on the Server runner' end require 'rack' require 'logger' - app = build_app(code) + app = build_app(builder) @server = Rack::Server.start( app: app, Port: port, AccessLog: [], @@ -47,12 +48,12 @@ def exit_status nil end - def build_app(source) - app = App.new(source) + def build_app(builder) + app = App.new(builder: builder, main: 'cli-runner') if static_folder not_found = [404, {}, []] app = Rack::Cascade.new( [ @@ -63,33 +64,17 @@ end app end - class App - def initialize(source) - @source = source + class App < SimpleServer + def initialize(options = {}) + @builder = options.fetch(:builder) + super end - BODY = <<-HTML - <!doctype html> - <html> - <head> - <meta charset="utf-8"/> - <script src="/cli_runner.js"></script> - </head> - </html> - HTML - - def call(env) - case env['PATH_INFO'] - when '/' - [200, { 'Content-Type' => 'text/html' }, [BODY]] - when '/cli_runner.js' - [200, { 'Content-Type' => 'text/javascript' }, [@source]] - else - [404, {}, ['not found']] - end + def builder(_) + @builder.call end end end end end