From c9c1ff8dacdee9fae5d386d8f084890b6c6147a8 Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Mon, 16 Aug 2021 20:16:50 +0000 Subject: [PATCH 1/2] add back . indicators & update ConnectToTunnel --- cmd/ghcs/logs.go | 2 +- cmd/ghcs/ssh.go | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cmd/ghcs/logs.go b/cmd/ghcs/logs.go index 45fd8bca8..d9422d49d 100644 --- a/cmd/ghcs/logs.go +++ b/cmd/ghcs/logs.go @@ -78,7 +78,7 @@ func Logs(tail bool, codespaceName string) error { go func() { scanner := bufio.NewScanner(stdout) for scanner.Scan() { - fmt.Println(scanner.Text()) + log.Println(scanner.Text()) } if err := scanner.Err(); err != nil { diff --git a/cmd/ghcs/ssh.go b/cmd/ghcs/ssh.go index 372061c55..40f8fbc18 100644 --- a/cmd/ghcs/ssh.go +++ b/cmd/ghcs/ssh.go @@ -65,14 +65,16 @@ func SSH(sshProfile, codespaceName string, sshServerPort int) error { log.Println("Preparing SSH...") if sshProfile == "" { - containerID, err := getContainerID(ctx, terminal) + containerID, err := getContainerID(ctx, log, terminal) if err != nil { return fmt.Errorf("error getting container id: %v", err) } - if err := setupSSH(ctx, terminal, containerID, codespace.RepositoryName); err != nil { + if err := setupSSH(ctx, log, terminal, containerID, codespace.RepositoryName); err != nil { return fmt.Errorf("error creating ssh server: %v", err) } + + log.Print("\n") } tunnelPort, tunnelClosed, err := codespaces.MakeSSHTunnel(ctx, lsclient, sshServerPort) @@ -86,7 +88,7 @@ func SSH(sshProfile, codespaceName string, sshServerPort int) error { } usingCustomPort := tunnelPort == sshServerPort - connClosed := codespaces.ConnectToTunnel(ctx, tunnelPort, connectDestination, usingCustomPort) + connClosed := codespaces.ConnectToTunnel(ctx, log, tunnelPort, connectDestination, usingCustomPort) log.Println("Ready...") select { @@ -103,24 +105,30 @@ func SSH(sshProfile, codespaceName string, sshServerPort int) error { return nil } -func getContainerID(ctx context.Context, terminal *liveshare.Terminal) (string, error) { +func getContainerID(ctx context.Context, logger *output.Logger, terminal *liveshare.Terminal) (string, error) { + logger.Print(".") + cmd := terminal.NewCommand( "/", "/usr/bin/docker ps -aq --filter label=Type=codespaces --filter status=running", ) + stream, err := cmd.Run(ctx) if err != nil { return "", fmt.Errorf("error running command: %v", err) } + logger.Print(".") scanner := bufio.NewScanner(stream) scanner.Scan() + logger.Print(".") containerID := scanner.Text() if err := scanner.Err(); err != nil { return "", fmt.Errorf("error scanning stream: %v", err) } + logger.Print(".") if err := stream.Close(); err != nil { return "", fmt.Errorf("error closing stream: %v", err) } @@ -128,9 +136,10 @@ func getContainerID(ctx context.Context, terminal *liveshare.Terminal) (string, return containerID, nil } -func setupSSH(ctx context.Context, terminal *liveshare.Terminal, containerID, repositoryName string) error { +func setupSSH(ctx context.Context, logger *output.Logger, terminal *liveshare.Terminal, containerID, repositoryName string) error { setupBashProfileCmd := fmt.Sprintf(`echo "cd /workspaces/%v; export $(cat /workspaces/.codespaces/shared/.env | xargs); exec /bin/zsh;" > /home/codespace/.bash_profile`, repositoryName) + logger.Print(".") compositeCommand := []string{setupBashProfileCmd} cmd := terminal.NewCommand( "/", @@ -141,6 +150,7 @@ func setupSSH(ctx context.Context, terminal *liveshare.Terminal, containerID, re return fmt.Errorf("error running command: %v", err) } + logger.Print(".") if err := stream.Close(); err != nil { return fmt.Errorf("error closing stream: %v", err) } From b47686163a2d06ce4e1b46d480f34133df611f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Tue, 17 Aug 2021 13:04:55 +0200 Subject: [PATCH 2/2] Fixes for log/output streams --- cmd/ghcs/logs.go | 2 +- internal/codespaces/ssh.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/ghcs/logs.go b/cmd/ghcs/logs.go index d9422d49d..45fd8bca8 100644 --- a/cmd/ghcs/logs.go +++ b/cmd/ghcs/logs.go @@ -78,7 +78,7 @@ func Logs(tail bool, codespaceName string) error { go func() { scanner := bufio.NewScanner(stdout) for scanner.Scan() { - log.Println(scanner.Text()) + fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { diff --git a/internal/codespaces/ssh.go b/internal/codespaces/ssh.go index 2bb661086..672ba3b7b 100644 --- a/internal/codespaces/ssh.go +++ b/internal/codespaces/ssh.go @@ -56,12 +56,12 @@ func makeSSHArgs(port int, dst, cmd string) ([]string, []string) { return cmdArgs, connArgs } -func ConnectToTunnel(ctx context.Context, port int, destination string, usingCustomPort bool) <-chan error { +func ConnectToTunnel(ctx context.Context, log logger, port int, destination string, usingCustomPort bool) <-chan error { connClosed := make(chan error) args, connArgs := makeSSHArgs(port, destination, "") if usingCustomPort { - fmt.Println("Connection Details: ssh " + destination + " " + strings.Join(connArgs, " ")) + log.Println("Connection Details: ssh " + destination + " " + strings.Join(connArgs, " ")) } cmd := exec.CommandContext(ctx, "ssh", args...)