class RBS::CLI

def run_constant(args, options)

def run_constant(args, options)
  # @type var context: String?
  context = nil
  OptionParser.new do |opts|
    opts.banner = <<EOU
e: rbs constant [options...] [name]
lve constant based on RBS.
ples:
rbs constant ::Object
rbs constant UTF_8
rbs constant --context=::Encoding UTF_8
ons:
    opts.on("--context CONTEXT", "Name of the module where the constant resolution starts") {|c| context = c }
  end.order!(args)
  unless args.size == 1
    stdout.puts "Expected one argument."
    return
  end
  loader = options.loader()
  env = Environment.from_loader(loader).resolve_type_names
  builder = DefinitionBuilder.new(env: env)
  table = ConstantTable.new(builder: builder)
  namespace = context ? Namespace.parse(context).absolute! : Namespace.root
  stdout.puts "Context: #{namespace}"
  name = Namespace.parse(args[0]).to_type_name
  stdout.puts "Constant name: #{name}"
  constant = table.resolve_constant_reference(name, context: namespace.ascend.to_a)
  if constant
    stdout.puts " => #{constant.name}: #{constant.type}"
  else
    stdout.puts " => [no constant]"
  end
end