#!/usr/bin/ruby.ruby4.0 

# Error codes are taken from /usr/include/sysexits.h

require 'opal/cli_options'
options = Opal::CLIOptions.new
begin
  options.parse!
rescue OptionParser::InvalidOption => e
  $stderr.puts "#{$0}: #{e.message} (-h will show valid options)"
  exit 64
end

require 'opal/cli'
options_hash = options.options
options_hash.merge!(
  file:     ARGF.file,
  filename: ARGF.filename,
  argv:     ARGV.dup
) unless options_hash[:lib_only]
cli = Opal::CLI.new options_hash

begin
  cli.run
  exit cli.exit_status || 0
rescue Opal::CliRunners::RunnerError => e
  $stderr.puts e.message
  exit 72
end
