From a6486a63db83f5604cb5e734e183cc3e016a1be0 Mon Sep 17 00:00:00 2001 From: Tyler Brock Date: Sat, 9 Jun 2018 15:41:47 -0700 Subject: [PATCH] Enable get command, exit if no streams with prefix --- blade/blade.go | 16 ++++++++++++++++ cmd/get.go | 25 +++++++++++++++++++------ cmd/saw.go | 2 +- cmd/watch.go | 9 ++++++++- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/blade/blade.go b/blade/blade.go index 3bcf218..b01b42a 100644 --- a/blade/blade.go +++ b/blade/blade.go @@ -65,6 +65,22 @@ func (b *Blade) GetLogStreams() []*cloudwatchlogs.LogStream { return streams } +func (b *Blade) GetEvents() { + input := b.config.FilterLogEventsInput() + + handlePage := func(page *cloudwatchlogs.FilterLogEventsOutput, lastPage bool) bool { + for _, event := range page.Events { + fmt.Println(*event.Message) + } + return !lastPage + } + err := b.cwl.FilterLogEventsPages(input, handlePage) + if err != nil { + fmt.Println("Error", err) + os.Exit(2) + } +} + func (b *Blade) StreamEvents() { var lastSeenTime *int64 var seenEventIDs map[string]bool diff --git a/cmd/get.go b/cmd/get.go index e288164..a01d59d 100644 --- a/cmd/get.go +++ b/cmd/get.go @@ -2,7 +2,10 @@ package cmd import ( "errors" + "fmt" + "os" + "github.com/TylerBrock/saw/blade" "github.com/TylerBrock/saw/config" "github.com/spf13/cobra" ) @@ -10,22 +13,32 @@ import ( var getConfig config.Configuration var GetCommand = &cobra.Command{ - Use: "get", + Use: "get ", Short: "Get log events", Long: "", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { - return errors.New("listing streams requires log group argument") + return errors.New("getting events requires log group argument") } return nil }, Run: func(cmd *cobra.Command, args []string) { - //b := blade.NewBlade(&getConfig) + getConfig.Group = args[0] + b := blade.NewBlade(&getConfig, nil) + if getConfig.Prefix != "" { + streams := b.GetLogStreams() + if len(streams) == 0 { + fmt.Printf("No streams found in %s with prefix %s\n", getConfig.Group, getConfig.Prefix) + os.Exit(3) + } + getConfig.Streams = streams + } + b.GetEvents() }, } func init() { - GetCommand.Flags().StringVar(&groupsConfig.Prefix, "prefix", "", "log group prefix filter") - GetCommand.Flags().StringVar(&groupsConfig.Start, "start", "", "start getting the logs from this point") - GetCommand.Flags().StringVar(&groupsConfig.End, "end", "now", "stop getting the logs at this point") + GetCommand.Flags().StringVar(&getConfig.Prefix, "prefix", "", "log group prefix filter") + GetCommand.Flags().StringVar(&getConfig.Start, "start", "", "start getting the logs from this point") + GetCommand.Flags().StringVar(&getConfig.End, "end", "now", "stop getting the logs at this point") } diff --git a/cmd/saw.go b/cmd/saw.go index 87cf669..0f9fdac 100644 --- a/cmd/saw.go +++ b/cmd/saw.go @@ -21,6 +21,6 @@ func init() { SawCommand.AddCommand(StreamsCommand) SawCommand.AddCommand(VersionCommand) SawCommand.AddCommand(WatchCommand) - //SawCommand.AddCommand(GetCommand) + SawCommand.AddCommand(GetCommand) //Saw.AddCommand(Delete) } diff --git a/cmd/watch.go b/cmd/watch.go index e17b29d..2a89e68 100644 --- a/cmd/watch.go +++ b/cmd/watch.go @@ -2,6 +2,8 @@ package cmd import ( "errors" + "fmt" + "os" "github.com/TylerBrock/saw/blade" "github.com/TylerBrock/saw/config" @@ -25,7 +27,12 @@ var WatchCommand = &cobra.Command{ watchConfig.Group = args[0] b := blade.NewBlade(&watchConfig, &outputConfig) if watchConfig.Prefix != "" { - watchConfig.Streams = b.GetLogStreams() + streams := b.GetLogStreams() + if len(streams) == 0 { + fmt.Printf("No streams found in %s with prefix %s\n", watchConfig.Group, watchConfig.Prefix) + os.Exit(3) + } + watchConfig.Streams = streams } b.StreamEvents() },