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

if File.exist? asciidoctor_epub3 = (File.expand_path '../lib/asciidoctor-epub3', __dir__)
  require asciidoctor_epub3
else
  require 'asciidoctor-epub3'
end
require 'asciidoctor/cli'

options = Asciidoctor::Cli::Options.new backend: 'epub3'

# FIXME: provide an API in Asciidoctor for sub-components to print version information
unless ARGV != ['-v'] && (ARGV & ['-V', '--version']).empty?
  require_relative '../lib/asciidoctor-epub3/version'
  $stdout.write %(Asciidoctor EPUB3 #{Asciidoctor::Epub3::VERSION} using )
  options.print_version
  exit 0
end

# FIXME: This is a really bizarre API. Please make me simpler.
case (result = options.parse! ARGV)
when Integer
  exit result
else
  invoker = Asciidoctor::Cli::Invoker.new options
  GC.start
  invoker.invoke!
  exit invoker.code
end
