class Tryouts::CLI

def parse_args(args)

def parse_args(args)
  Tryouts.trace "Parsing arguments: #{args.inspect}"
  options = {}
  parser = OptionParser.new do |opts|
    opts.banner = "Usage: try [OPTIONS] FILE...\n\nModern Tryouts test runner with framework translation"
    opts.separator "\nFramework Options:"
    opts.on('--direct', 'Direct execution with TestBatch (default)') { options[:framework] = :direct }
    opts.on('--rspec', 'Use RSpec framework') { options[:framework]                        = :rspec }
    opts.on('--minitest', 'Use Minitest framework') { options[:framework]                  = :minitest }
    opts.separator "\nGeneration Options:"
    opts.on('--generate-rspec', 'Generate RSpec code only') do
      options[:framework]     = :rspec
      options[:generate_only] = true
    end
    opts.on('--generate-minitest', 'Generate Minitest code only') do
      options[:framework]     = :minitest
      options[:generate_only] = true
    end
    opts.on('--generate', 'Generate code only (use with --rspec/--minitest)') do
      options[:generate_only] = true
      options[:framework]   ||= :rspec
    end
    opts.separator "\nExecution Options:"
    opts.on('--shared-context', 'Override default context mode') { options[:shared_context]         = true }
    opts.on('--no-shared-context', 'Override default context mode') { options[:shared_context]      = false }
    opts.on('-v', '--verbose', 'Show detailed test output with line numbers') { options[:verbose]   = true }
    opts.on('-f', '--fails', 'Show only failing tests') { options[:fails_only]                      = true }
    opts.on('-q', '--quiet', 'Minimal output (dots and summary only)') { options[:quiet]            = true }
    opts.on('-c', '--compact', 'Compact single-line output') { options[:compact]                    = true }
    opts.on('-l', '--live', 'Live status display') { options[:live_status]                          = true }
    opts.separator "\nInspection Options:"
    opts.on('-i', '--inspect', 'Inspect file structure without running tests') { options[:inspect] = true }
    opts.separator "\nGeneral Options:"
    opts.on('-V', '--version', 'Show version') { options[:version] = true }
    opts.on('-D', '--debug', 'Enable debug mode') do
      options[:debug] = true
      Tryouts.debug   = true
    end
    opts.on('-h', '--help', 'Show this help') do
      puts opts
      exit 0
    end
    opts.separator HELP.freeze
  end
  files = parser.parse(args)
  Tryouts.trace "Parsed files: #{files.inspect}, options: #{options.inspect}"
  [files, options]
rescue OptionParser::InvalidOption => ex
  warn "Error: #{ex.message}"
  warn "Try 'try --help' for more information."
  exit 1
end