Add facet completion func
This commit is contained in:
		@@ -9,7 +9,36 @@ import (
 | 
			
		||||
	"gitea.libretechconsulting.com/50W/eia-api-go/pkg/eia"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func CompleteRoutes(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
 | 
			
		||||
// Given args of <route> <facet>, complete either the route arg or the
 | 
			
		||||
// facet arg, whichever is appropriate
 | 
			
		||||
func CompleteRouteOrFacet(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
 | 
			
		||||
	if len(args) < 1 {
 | 
			
		||||
		return CompleteRoute(cmd, args, toComplete)
 | 
			
		||||
	}
 | 
			
		||||
	return CompleteFacet(cmd, args, toComplete)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CompleteFacet(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
 | 
			
		||||
	facets, err := GetFacets(cmd, args[0])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Logger(cmd).Err(err).Send()
 | 
			
		||||
		return nil, cobra.ShellCompDirectiveError
 | 
			
		||||
	} else if facets.FacetOptions == nil || len(*facets.FacetOptions) < 1 {
 | 
			
		||||
		Logger(cmd).Error().Str("route", args[0]).Msg("no facets found for route")
 | 
			
		||||
		return nil, cobra.ShellCompDirectiveError
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	compFacets := make([]string, 0, len(*facets.FacetOptions))
 | 
			
		||||
	for _, facet := range *facets.FacetOptions {
 | 
			
		||||
		if strings.HasPrefix(facet, toComplete) {
 | 
			
		||||
			compFacets = append(compFacets, facet)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return slices.Clip(compFacets), cobra.ShellCompDirectiveNoFileComp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CompleteRoute(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
 | 
			
		||||
	routes := eia.GetRoutes()
 | 
			
		||||
	compRoutes := make([]string, 0, len(routes))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user