From 7ad541feb18cccd89a716eb41356196516982835 Mon Sep 17 00:00:00 2001 From: Sam Alba Date: Thu, 25 Mar 2021 14:24:05 -0700 Subject: [PATCH] implemented new, up, list Signed-off-by: Sam Alba --- cmd/dagger/cmd/common.go | 15 +++++++++++++++ cmd/dagger/cmd/compute.go | 11 +---------- cmd/dagger/cmd/list.go | 17 ++++++++++++++--- cmd/dagger/cmd/new.go | 10 +++------- cmd/dagger/cmd/up.go | 5 +---- dagger/route.go | 5 ----- dagger/store.go | 22 ++++++++++++++++++++++ 7 files changed, 56 insertions(+), 29 deletions(-) diff --git a/cmd/dagger/cmd/common.go b/cmd/dagger/cmd/common.go index a3de45b2..1b404e93 100644 --- a/cmd/dagger/cmd/common.go +++ b/cmd/dagger/cmd/common.go @@ -1,9 +1,12 @@ package cmd import ( + "context" + "fmt" "os" "path/filepath" + "dagger.io/go/dagger" "github.com/rs/zerolog" "github.com/spf13/cobra" ) @@ -31,3 +34,15 @@ func getRouteName(lg zerolog.Logger, cmd *cobra.Command) string { return currentDir } + +func routeUp(ctx context.Context, lg zerolog.Logger, route *dagger.Route) { + c, err := dagger.NewClient(ctx, "") + if err != nil { + lg.Fatal().Err(err).Msg("unable to create client") + } + output, err := c.Up(ctx, route) + if err != nil { + lg.Fatal().Err(err).Msg("failed to compute") + } + fmt.Println(output.JSON()) +} diff --git a/cmd/dagger/cmd/compute.go b/cmd/dagger/cmd/compute.go index d5149ce3..5e533660 100644 --- a/cmd/dagger/cmd/compute.go +++ b/cmd/dagger/cmd/compute.go @@ -3,7 +3,6 @@ package cmd import ( "encoding/json" "errors" - "fmt" "os" "strings" @@ -121,15 +120,7 @@ var computeCmd = &cobra.Command{ lg.Fatal().Err(err).Msg("unable to initialize route") } - c, err := dagger.NewClient(ctx, "") - if err != nil { - lg.Fatal().Err(err).Msg("unable to create client") - } - output, err := c.Up(ctx, route) - if err != nil { - lg.Fatal().Err(err).Msg("failed to compute") - } - fmt.Println(output.JSON()) + routeUp(ctx, lg, route) }, } diff --git a/cmd/dagger/cmd/list.go b/cmd/dagger/cmd/list.go index 108f9928..4df40908 100644 --- a/cmd/dagger/cmd/list.go +++ b/cmd/dagger/cmd/list.go @@ -1,6 +1,10 @@ package cmd import ( + "fmt" + + "dagger.io/go/cmd/dagger/logger" + "dagger.io/go/dagger" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -17,10 +21,17 @@ var listCmd = &cobra.Command{ } }, Run: func(cmd *cobra.Command, args []string) { - // lg := logger.New() - // ctx := lg.WithContext(cmd.Context()) + lg := logger.New() + ctx := lg.WithContext(cmd.Context()) - panic("not implemented") + routes, err := dagger.ListRoutes(ctx) + if err != nil { + lg.Fatal().Err(err).Msg("cannot list routes") + } + + for _, name := range routes { + fmt.Println(name) + } }, } diff --git a/cmd/dagger/cmd/new.go b/cmd/dagger/cmd/new.go index 38cf0e24..6368f1d6 100644 --- a/cmd/dagger/cmd/new.go +++ b/cmd/dagger/cmd/new.go @@ -24,7 +24,7 @@ var newCmd = &cobra.Command{ ctx := lg.WithContext(cmd.Context()) // nolint:staticcheck - upRoute, err := cmd.Flags().GetBool("up") + upRouteFlag, err := cmd.Flags().GetBool("up") if err != nil { lg.Fatal().Err(err).Str("flag", "up").Msg("unable to resolve flag") } @@ -39,12 +39,8 @@ var newCmd = &cobra.Command{ } lg.Info().Str("route-id", route.ID()).Str("route-name", routeName).Msg("created route") - if upRoute { - lg.Info().Str("route-id", route.ID()).Msg("bringing route online") - // FIXME - if err := route.FIXME(ctx); err != nil { - lg.Fatal().Err(err).Str("route-id", route.ID()).Msg("failed to create route") - } + if upRouteFlag { + routeUp(ctx, lg, route) } }, } diff --git a/cmd/dagger/cmd/up.go b/cmd/dagger/cmd/up.go index f41ec94d..9464eb86 100644 --- a/cmd/dagger/cmd/up.go +++ b/cmd/dagger/cmd/up.go @@ -32,10 +32,7 @@ var upCmd = &cobra.Command{ } // TODO: Implement options: --no-cache - // FIXME - if err := route.FIXME(ctx); err != nil { - lg.Fatal().Err(err).Str("route-name", routeName).Str("route-id", route.ID()).Msg("failed to up the route") - } + routeUp(ctx, lg, route) }, } diff --git a/dagger/route.go b/dagger/route.go index 666d0daf..1634ad5b 100644 --- a/dagger/route.go +++ b/dagger/route.go @@ -2,7 +2,6 @@ package dagger import ( "context" - "errors" "fmt" "io/fs" "strings" @@ -311,10 +310,6 @@ func (r *Route) Query(ctx context.Context, expr interface{}, o *QueryOpts) (*com panic("NOT IMPLEMENTED") } -func (r *Route) FIXME(ctx context.Context) error { - return errors.New("FIXME") -} - type QueryOpts struct{} func newTaskFunc(inst *cue.Instance, runner cueflow.RunnerFunc) cueflow.TaskFunc { diff --git a/dagger/store.go b/dagger/store.go index 9bcfffbf..b52467de 100644 --- a/dagger/store.go +++ b/dagger/store.go @@ -4,8 +4,10 @@ import ( "context" "encoding/json" "errors" + "io/ioutil" "os" "path" + "strings" "github.com/google/uuid" ) @@ -67,6 +69,26 @@ func LoadRoute(ctx context.Context, id string, o *LoadOpts) (*Route, error) { panic("NOT IMPLEMENTED") } +func ListRoutes(ctx context.Context) ([]string, error) { + routes := []string{} + + rootDir := os.ExpandEnv(storeLocation) + files, err := ioutil.ReadDir(rootDir) + if err != nil { + return nil, err + } + + for _, f := range files { + if f.IsDir() || !strings.HasSuffix(f.Name(), ".json") { + // There is extra data in the directory, ignore + continue + } + routes = append(routes, f.Name()[:len(f.Name())-5]) + } + + return routes, nil +} + func routePath(name string) string { return path.Join(os.ExpandEnv(storeLocation), name+".json") }