func show()

in tools/dubbogo-cli/cmd/show.go [52:124]


func show(cmd *cobra.Command, _ []string) {
	var (
		methodsMap map[string][]string
		err        error
	)

	registry, _ := cmd.Flags().GetString("r")
	metadataCenter, _ := cmd.Flags().GetString("mc")
	host, _ := cmd.Flags().GetString("h")

	// Validate inputs
	if registry == "" && metadataCenter == "" {
		log.Println("Error: At least one of --r (registry) or --mc (metadata center) must be specified")
		return
	}
	if host == "" {
		log.Println("Error: Host (--h) is required")
		return
	}

	table := tablewriter.NewWriter(os.Stdout)
	table.SetHeader([]string{"Interface", "Method"})

	if registry != "" {
		registryFactory, ok := metadata.GetFactory(registry)
		if !ok {
			log.Printf("Error: Registry type '%s' is not supported", registry)
			return
		}
		// Pass the raw host address instead of constructing a URL
		hostArg := []string{host}
		methodsMap, err = registryFactory("dubbogo-cli", hostArg).ShowRegistryCenterChildren()
		if err != nil {
			log.Printf("Failed to fetch registry data from %s: %v", registry, err)
			fmt.Printf("======================\n")
			fmt.Printf("Registry (%s): No data available\n", registry)
			fmt.Printf("======================\n")
			return
		}
		fmt.Printf("======================\n")
		fmt.Printf("Registry (%s):\n", registry)
		if len(methodsMap) == 0 {
			fmt.Println("No interfaces found")
		} else {
			for k, v := range methodsMap {
				table.Append([]string{k, strings.Join(v, ", ")})
			}
			table.Render()
		}
		fmt.Printf("======================\n")
	}

	if metadataCenter != "" {
		metadataCenterFactory, ok := metadata.GetFactory(metadataCenter)
		if !ok {
			log.Printf("Error: Metadata center type '%s' is not supported", metadataCenter)
			return
		}
		hostArg := []string{host}
		methodsMap, err = metadataCenterFactory("dubbogo-cli", hostArg).ShowMetadataCenterChildren()
		if err != nil {
			log.Printf("Error fetching metadata center data: %v", err)
			return
		}
		fmt.Printf("======================\n")
		fmt.Printf("MetadataCenter (%s):\n", metadataCenter)
		for k, v := range methodsMap {
			table.Append([]string{k, strings.Join(v, ", ")})
		}
		table.Render()
		fmt.Printf("======================\n")
	}
}