Skip to content

Commit fc18360

Browse files
committed
Use checkmark for success message
1 parent 2ce11ae commit fc18360

File tree

7 files changed

+27
-11
lines changed

7 files changed

+27
-11
lines changed

internal/output/plain_format.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ func formatStatusLine(e ContainerStatusEvent) (string, bool) {
4242
return "Waiting for LocalStack to be ready...", true
4343
case "ready":
4444
if e.Detail != "" {
45-
return fmt.Sprintf("LocalStack ready (%s)", e.Detail), true
45+
return fmt.Sprintf("%s LocalStack ready (%s)", SuccessMarker(), e.Detail), true
4646
}
47-
return "LocalStack ready", true
47+
return SuccessMarker() + " LocalStack ready", true
4848
default:
4949
if e.Detail != "" {
5050
return fmt.Sprintf("LocalStack: %s (%s)", e.Phase, e.Detail), true
@@ -112,7 +112,7 @@ func formatAuthEvent(e AuthEvent) string {
112112
func formatMessageEvent(e MessageEvent) string {
113113
switch e.Severity {
114114
case SeveritySuccess:
115-
return "> Success: " + e.Text
115+
return SuccessMarker() + " " + e.Text
116116
case SeverityNote:
117117
return "> Note: " + e.Text
118118
case SeverityWarning:

internal/output/plain_format_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestFormatEventLine(t *testing.T) {
2020
{
2121
name: "message event success",
2222
event: MessageEvent{Severity: SeveritySuccess, Text: "done"},
23-
want: "> Success: done",
23+
want: "\x1b[38;2;183;201;92m✔︎\x1b[0m done",
2424
wantOK: true,
2525
},
2626
{
@@ -56,7 +56,7 @@ func TestFormatEventLine(t *testing.T) {
5656
{
5757
name: "status ready with detail",
5858
event: ContainerStatusEvent{Phase: "ready", Container: "localstack-aws", Detail: "abc123"},
59-
want: "LocalStack ready (abc123)",
59+
want: "\x1b[38;2;183;201;92m✔︎\x1b[0m LocalStack ready (abc123)",
6060
wantOK: true,
6161
},
6262
{

internal/output/plain_sink_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ func TestPlainSink_EmitsStatusEvent(t *testing.T) {
5959
{
6060
name: "ready phase with detail",
6161
event: ContainerStatusEvent{Phase: "ready", Container: "localstack-aws", Detail: "abc123"},
62-
expected: "LocalStack ready (abc123)\n",
62+
expected: "\x1b[38;2;183;201;92m✔︎\x1b[0m LocalStack ready (abc123)\n",
6363
},
6464
{
6565
name: "ready phase without detail",
6666
event: ContainerStatusEvent{Phase: "ready", Container: "localstack-aws"},
67-
expected: "LocalStack ready\n",
67+
expected: "\x1b[38;2;183;201;92m✔︎\x1b[0m LocalStack ready\n",
6868
},
6969
{
7070
name: "unknown phase with detail",

internal/output/style.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package output
2+
3+
import "fmt"
4+
5+
const SuccessColorHex = "#B7C95C"
6+
7+
func SuccessMarker() string {
8+
return fmt.Sprintf("\x1b[38;2;183;201;92m%s\x1b[0m", SuccessMarkerText())
9+
}
10+
11+
func SuccessMarkerText() string {
12+
return "✔︎"
13+
}

internal/ui/app_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func TestAppMessageEventRendering(t *testing.T) {
174174
if len(app.lines) != 1 {
175175
t.Fatalf("expected 1 line, got %d", len(app.lines))
176176
}
177-
if !strings.Contains(app.lines[0].text, "Success:") || !strings.Contains(app.lines[0].text, "Done") {
177+
if !strings.Contains(app.lines[0].text, "✔︎") || !strings.Contains(app.lines[0].text, "Done") {
178178
t.Fatalf("expected rendered success message, got: %q", app.lines[0].text)
179179
}
180180
}

internal/ui/components/message.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ func RenderMessage(e output.MessageEvent) string {
99
prefix := styles.Secondary.Render("> ")
1010
switch e.Severity {
1111
case output.SeveritySuccess:
12-
return prefix + styles.Success.Render("Success:") + " " + styles.Message.Render(e.Text)
12+
return styles.Success.Render(output.SuccessMarkerText()) + " " + styles.Message.Render(e.Text)
1313
case output.SeverityNote:
1414
return prefix + styles.Note.Render("Note:") + " " + styles.Message.Render(e.Text)
1515
case output.SeverityWarning:

internal/ui/styles/styles.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package styles
22

3-
import "github.com/charmbracelet/lipgloss"
3+
import (
4+
"github.com/charmbracelet/lipgloss"
5+
"github.com/localstack/lstk/internal/output"
6+
)
47

58
const (
69
NimboDarkColor = "#3F51C7"
@@ -39,7 +42,7 @@ var (
3942

4043
// Message severity styles
4144
Success = lipgloss.NewStyle().
42-
Foreground(lipgloss.Color("42"))
45+
Foreground(lipgloss.Color(output.SuccessColorHex))
4346

4447
Note = lipgloss.NewStyle().
4548
Foreground(lipgloss.Color("33"))

0 commit comments

Comments
 (0)