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