Sha256: c850520cd97726b817b21f36b6b4201322799967884d479e96bc593c82c3360d

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'bundler/setup'
require 'rack/contrib'
require 'webrick'
require 'diver_down'
require 'diver_down-web'
require 'optparse'

options = {}
option_parser = OptionParser.new do |opts|
  opts.banner = <<~BANNER
    Usage: diver_down_web [options]

    Example:
      diver_down_web --definition-dir /path/to/definitions --module-store /path/to/module_store.yml

    Options:
  BANNER

  opts.on('--definition-dir PATH', 'Path to the definition directory') do |path|
    options[:definition_dir] = path
  end

  opts.on('--module-store PATH', 'Path to the module store') do |path|
    options[:module_store] = path
  end
end
option_parser.parse!(ARGV)

unless options[:definition_dir]
  puts 'Missing --definition-dir'
  puts
  puts option_parser.help
  exit 1
end

app = Rack::JSONBodyParser.new(
  DiverDown::Web.new(
    definition_dir: options.fetch(:definition_dir),
    module_store: DiverDown::Web::ModuleStore.new(options[:module_store] || Tempfile.new(['module_store', '.yaml']))
  )
)

begin
  # Rack 2.0
  require 'rack'
  require 'rack/server'
  Rack::Server.new(app:, server: :webrick).start
rescue LoadError
  # Rack 3.0
  require 'rackup'
  Rackup::Server.new(app:, server: :webrick).start
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
diver_down-0.0.1.alpha13 exe/diver_down_web
diver_down-0.0.1.alpha3 exe/diver_down_web
diver_down-0.0.1.alpha2 exe/diver_down_web
diver_down-0.0.1.alpha1 exe/diver_down_web