Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions internal/output/plain_format.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,24 +153,23 @@ func formatErrorEvent(e ErrorEvent) string {

func formatInstanceInfo(e InstanceInfoEvent) string {
var sb strings.Builder
sb.WriteString(SuccessMarker() + " " + e.EmulatorName + " is running (" + e.Host + ")")
var meta []string
if e.Uptime > 0 {
meta = append(meta, "UPTIME: "+formatUptime(e.Uptime))
sb.WriteString(SuccessMarker() + " " + e.EmulatorName + " is running")
if e.Host != "" {
sb.WriteString("\n• Endpoint: " + e.Host)
}
if e.ContainerName != "" {
meta = append(meta, "CONTAINER: "+e.ContainerName)
sb.WriteString("\n• Container: " + e.ContainerName)
}
if e.Version != "" {
meta = append(meta, "VERSION: "+e.Version)
sb.WriteString("\n• Version: " + e.Version)
}
if len(meta) > 0 {
sb.WriteString("\n " + strings.Join(meta, " · "))
if e.Uptime > 0 {
sb.WriteString("\n• Uptime: " + FormatUptime(e.Uptime))
}
return sb.String()
}

func formatUptime(d time.Duration) string {
func FormatUptime(d time.Duration) string {
d = d.Round(time.Second)
h := int(d.Hours())
m := int(d.Minutes()) % 60
Expand Down
4 changes: 2 additions & 2 deletions internal/output/plain_format_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func TestFormatEventLine(t *testing.T) {
ContainerName: "localstack-aws",
Uptime: 4*time.Minute + 23*time.Second,
},
want: SuccessMarker() + " LocalStack AWS Emulator is running (localhost.localstack.cloud:4566)\n UPTIME: 4m 23s · CONTAINER: localstack-aws · VERSION: 4.14.1",
want: SuccessMarker() + " LocalStack AWS Emulator is running\n• Endpoint: localhost.localstack.cloud:4566\n• Container: localstack-aws\n• Version: 4.14.1\n• Uptime: 4m 23s",
wantOK: true,
},
{
Expand All @@ -129,7 +129,7 @@ func TestFormatEventLine(t *testing.T) {
EmulatorName: "LocalStack AWS Emulator",
Host: "127.0.0.1:4566",
},
want: SuccessMarker() + " LocalStack AWS Emulator is running (127.0.0.1:4566)",
want: SuccessMarker() + " LocalStack AWS Emulator is running\n• Endpoint: 127.0.0.1:4566",
wantOK: true,
},
{
Expand Down
4 changes: 2 additions & 2 deletions internal/output/plain_sink_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func TestPlainSink_EmitsInstanceInfoEvent(t *testing.T) {
Uptime: 4*time.Minute + 23*time.Second,
})

expected := SuccessMarker() + " LocalStack AWS Emulator is running (localhost.localstack.cloud:4566)\n UPTIME: 4m 23s · CONTAINER: localstack-aws · VERSION: 4.14.1\n"
expected := SuccessMarker() + " LocalStack AWS Emulator is running\n• Endpoint: localhost.localstack.cloud:4566\n• Container: localstack-aws\n• Version: 4.14.1\n• Uptime: 4m 23s\n"
assert.Equal(t, expected, out.String())
assert.NoError(t, sink.Err())
})
Expand All @@ -177,7 +177,7 @@ func TestPlainSink_EmitsInstanceInfoEvent(t *testing.T) {
Host: "127.0.0.1:4566",
})

expected := SuccessMarker() + " LocalStack AWS Emulator is running (127.0.0.1:4566)\n"
expected := SuccessMarker() + " LocalStack AWS Emulator is running\n• Endpoint: 127.0.0.1:4566\n"
assert.Equal(t, expected, out.String())
assert.NoError(t, sink.Err())
})
Expand Down
17 changes: 12 additions & 5 deletions internal/ui/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,11 +295,18 @@ func (a App) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
a.addLine(blank)
return a, nil
case output.InstanceInfoEvent:
if line, ok := output.FormatEventLine(msg); ok {
line = strings.Replace(line, output.SuccessMarker(), styles.Success.Render(output.SuccessMarker()), 1)
for _, part := range strings.Split(line, "\n") {
a.addLine(styledLine{text: part})
}
a.addLine(styledLine{text: styles.Success.Render(output.SuccessMarker()) + " " + msg.EmulatorName + " is running"})
if msg.Host != "" {
a.addLine(styledLine{text: "• Endpoint: " + msg.Host, secondary: true})
}
if msg.ContainerName != "" {
a.addLine(styledLine{text: "• Container: " + msg.ContainerName, secondary: true})
}
if msg.Version != "" {
a.addLine(styledLine{text: "• Version: " + msg.Version, secondary: true})
}
if msg.Uptime > 0 {
a.addLine(styledLine{text: "• Uptime: " + output.FormatUptime(msg.Uptime), secondary: true})
}
return a, nil
default:
Expand Down
2 changes: 1 addition & 1 deletion test/integration/status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ func TestStatusCommandForSnowflakeShowsVersion(t *testing.T) {
require.NoError(t, err, "lstk status failed: %s", stderr)
requireExitCode(t, 0, err)

assert.Contains(t, stdout, "VERSION: "+expectedVersion,
assert.Contains(t, stdout, "• Version: "+expectedVersion,
"snowflake status should display the version reported by /_localstack/health")
}

Expand Down
Loading