From be794f1579e8839a75c8cd3149bd28bede0ce63e Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Thu, 29 Jul 2021 17:09:50 +0000 Subject: [PATCH] creation log support for cat and tail --- cmd/ghcs/logs.go | 19 +++++++++++++++---- cmd/ghcs/ssh.go | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cmd/ghcs/logs.go b/cmd/ghcs/logs.go index 3696999d5..03a7c963a 100644 --- a/cmd/ghcs/logs.go +++ b/cmd/ghcs/logs.go @@ -12,7 +12,9 @@ import ( ) func NewLogsCmd() *cobra.Command { - return &cobra.Command{ + var tail bool + + logsCmd := &cobra.Command{ Use: "logs", Short: "Access Codespace logs", RunE: func(cmd *cobra.Command, args []string) error { @@ -20,16 +22,20 @@ func NewLogsCmd() *cobra.Command { if len(args) > 0 { codespaceName = args[0] } - return Logs(codespaceName) + return Logs(tail, codespaceName) }, } + + logsCmd.Flags().BoolVarP(&tail, "tail", "t", false, "Tail the logs") + + return logsCmd } func init() { rootCmd.AddCommand(NewLogsCmd()) } -func Logs(codespaceName string) error { +func Logs(tail bool, codespaceName string) error { apiClient := api.New(os.Getenv("GITHUB_TOKEN")) ctx := context.Background() @@ -53,9 +59,14 @@ func Logs(codespaceName string) error { return fmt.Errorf("make ssh tunnel: %v", err) } + cmdType := "cat" + if tail { + cmdType = "tail -f" + } + dst := fmt.Sprintf("%s@localhost", getSSHUser(codespace)) stdout, err := codespaces.RunCommand( - ctx, tunnelPort, dst, "cat /workspaces/.codespaces/.persistedshare/creation.log", + ctx, tunnelPort, dst, fmt.Sprintf("%v /workspaces/.codespaces/.persistedshare/creation.log", cmdType), ) if err != nil { return fmt.Errorf("run command: %v", err) diff --git a/cmd/ghcs/ssh.go b/cmd/ghcs/ssh.go index 23a4c2ca0..60fdee498 100644 --- a/cmd/ghcs/ssh.go +++ b/cmd/ghcs/ssh.go @@ -48,7 +48,7 @@ func SSH(sshProfile, codespaceName string, sshServerPort int) error { codespace, token, err := codespaces.GetOrChooseCodespace(ctx, apiClient, user, codespaceName) if err != nil { - return fmt.Errorf("get or choose codespace: %v") + return fmt.Errorf("get or choose codespace: %v", err) } lsclient, err := codespaces.ConnectToLiveshare(ctx, apiClient, token, codespace)