Skip to content

Commit

Permalink
fix: droplet initialization message
Browse files Browse the repository at this point in the history
Signed-off-by: Toma Puljak <[email protected]>
  • Loading branch information
Tpuljak committed Sep 9, 2024
1 parent 3b8c853 commit 94679f8
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 17 deletions.
22 changes: 22 additions & 0 deletions internal/log/log_writer.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package log

import (
"fmt"
"io"
"time"

log "github.com/sirupsen/logrus"
)

Expand All @@ -17,3 +21,21 @@ func (w *InfoLogWriter) Write(p []byte) (n int, err error) {
log.Info(string(p))
return len(p), nil
}

func ShowSpinner(logWriter io.Writer, startStatement, endStatement string) chan struct{} {
stopSpinnerChan := make(chan struct{})
go func() {
spinner := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
for i := 0; ; i++ {
select {
case <-stopSpinnerChan:
logWriter.Write([]byte("\r\033[K"))
logWriter.Write([]byte(endStatement + "\n"))
return
case <-time.After(200 * time.Millisecond):
logWriter.Write([]byte(fmt.Sprintf("%s %s\r", spinner[i%len(spinner)], startStatement)))
}
}
}()
return stopSpinnerChan
}
20 changes: 3 additions & 17 deletions pkg/provider/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,25 +49,11 @@ func (p *DigitalOceanProvider) CreateWorkspace(workspaceReq *provider.WorkspaceR
}

logWriter.Write([]byte("Droplet created.\n"))
stopSpinnerChan := make(chan bool)

go func() {
spinner := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
for i := 0; ; i++ {
select {
case <-stopSpinnerChan:
return
case <-time.After(200 * time.Millisecond):
if i > 0 {
logWriter.Write([]byte("\033[1F"))
}
logWriter.Write([]byte(fmt.Sprintf("%s Waiting for the agent to start...\n", spinner[i%len(spinner)])))
}
}
}()

initializingDropletSpinner := log_writers.ShowSpinner(logWriter, "Initializing droplet", "Droplet initialized")

err = p.waitForDial(workspaceReq.Workspace.Id, 10*time.Minute)
stopSpinnerChan <- true
close(initializingDropletSpinner)

if err != nil {
logWriter.Write([]byte("Failed to dial: " + err.Error() + "\n"))
Expand Down

0 comments on commit 94679f8

Please sign in to comment.