#!/usr/bin/env ruby # typed: true require 'cli/ui' require 'cli/kit' CLI::UI::StdoutRouter.enable include(CLI::Kit) registry = CommandRegistry.new(default: 'hello') registry.add(Class.new(BaseCommand) do sig { params(_args: T::Array[String], _name: String).void } def call(_args, _name) puts 'hello, world!' end end, 'hello') executor = Executor.new(log_file: '/tmp/example.log') error_handler = ErrorHandler.new(log_file: '/tmp/example.log', exception_reporter: nil) resolver = Resolver.new(tool_name: 'example', command_registry: registry) entry_point = ->(args) { executor.call(*resolver.call(args)) } exit(error_handler.call { entry_point.call(ARGV.dup) }) if __FILE__ == $PROGRAM_NAME