Implement get route subcommand

This commit is contained in:
2024-11-26 21:34:51 -05:00
parent 5d2d247dde
commit 521e376455
3 changed files with 148 additions and 72 deletions

View File

@ -1,20 +1,26 @@
package get
import (
"slices"
"strings"
"github.com/k0kubun/pp/v3"
"github.com/spf13/cobra"
"gitea.libretechconsulting.com/50W/eia-api-go/cmd/eia-client/internal/util"
"gitea.libretechconsulting.com/50W/eia-api-go/pkg/eia"
)
var filteredSuffixes = []string{
"Data",
"Facet",
"FacetId",
"Body",
}
var (
filteredSuffixes = []string{
"Facet",
"FacetId",
"Body",
}
filteredPrefixes = []string{
"EIAA",
}
)
var GetRouteCmd = &cobra.Command{
Use: "route",
@ -28,24 +34,46 @@ var GetRouteCmd = &cobra.Command{
func RunGetRouteCmd(cmd *cobra.Command, args []string) {
logger := util.Logger(cmd)
logger.Info().Str("route", args[0]).Msg("getting route description")
route, err := util.GetRoute(cmd, args[0])
if err != nil {
logger.Fatal().Err(err).Send()
}
pp.Println(route)
}
func completeRouteRoutes(cmd *cobra.Command, args []string, toComplete string) (
[]string, cobra.ShellCompDirective,
) {
routes := eia.GetRoutes()
routes := eia.GetRoutes("Data")
routeRoutes := make([]string, 0, len(routes))
for _, r := range routes {
var rName string
for _, suffix := range filteredSuffixes {
if strings.HasSuffix(r, suffix) {
goto next
}
}
routeRoutes = append(routeRoutes, r)
for _, prefix := range filteredPrefixes {
if strings.HasPrefix(r, prefix) {
goto next
}
}
rName, _ = strings.CutSuffix(r, "Data")
routeRoutes = append(routeRoutes, rName)
next:
}
// TODO: Filter for toComplete
return routeRoutes, cobra.ShellCompDirectiveNoFileComp
filteredRoutes := make([]string, 0, len(routeRoutes))
if toComplete != "" {
for _, route := range routeRoutes {
if strings.HasPrefix(route, toComplete) {
filteredRoutes = append(filteredRoutes, route)
}
}
} else {
filteredRoutes = routeRoutes
}
return slices.Clip(filteredRoutes), cobra.ShellCompDirectiveNoFileComp
}

View File

@ -7,6 +7,15 @@ import (
"gitea.libretechconsulting.com/50W/eia-api-go/pkg/eia"
)
func GetRoute(cmd *cobra.Command, route string) (*eiaapi.FinalRoute, error) {
client, err := Client(cmd)
if err != nil {
return nil, err
}
return client.GetRoute(cmd.Context(), route, eia.DefaultMethodSubs(cmd.Context()))
}
func GetFacet(cmd *cobra.Command, route string, facet string) (*eiaapi.FacetDetails, error) {
client, err := Client(cmd)
if err != nil {