Style update banner command
- commit
- 9b7e0ace7f80da0ca58768c70e3335e8131a4f84
- author
- patriceckhart · · 2026-05-22 17:11 UTC
- parent
- 3d7f80e
- signature
- unsigned
1 file · +5 -16
M internal/agent/modes/update_banner.go +5 -16
| @@ -2,7 +2,6 @@ package modes | |||
| 2 | 2 | ||
| 3 | 3 | import ( | |
| 4 | 4 | "fmt" | |
| 5 | - | "runtime" | |
| 6 | 5 | ||
| 7 | 6 | "github.com/patriceckhart/zot/internal/tui" | |
| 8 | 7 | ) | |
| @@ -31,29 +30,19 @@ func renderUpdateBanner(th tui.Theme, info UpdateInfo, width int) []string { | |||
| 31 | 30 | out := []string{ | |
| 32 | 31 | frameHeaderColor(th, "update available", width, color), | |
| 33 | 32 | } | |
| 33 | + | out = append(out, "") | |
| 34 | 34 | ||
| 35 | 35 | title := fmt.Sprintf("zot %s is available (you're on %s).", info.Latest, info.Current) | |
| 36 | 36 | out = append(out, " "+th.FG256(color, tui.Bold(title))) | |
| 37 | - | ||
| 38 | - | cmd := recommendedUpdateCommand() | |
| 39 | - | out = append(out, " "+th.FG256(th.Muted, "run: ")+th.FG256(th.ToolOut, cmd)) | |
| 37 | + | out = append(out, "") | |
| 38 | + | out = append(out, " "+th.FG256(th.Muted, "run: ")+th.FG256(color, "zot update")) | |
| 40 | 39 | ||
| 41 | 40 | if info.URL != "" { | |
| 42 | - | out = append(out, " "+th.FG256(th.Muted, "changelog: "+info.URL)) | |
| 41 | + | out = append(out, " "+th.FG256(th.Muted, "changelog: ")+th.FG256(color, info.URL)) | |
| 43 | 42 | } | |
| 44 | 43 | ||
| 44 | + | out = append(out, "") | |
| 45 | 45 | out = append(out, frameRuleColor(th, width, color)) | |
| 46 | 46 | out = append(out, "") | |
| 47 | 47 | return out | |
| 48 | 48 | } | |
| 49 | - | ||
| 50 | - | // recommendedUpdateCommand returns the one-liner appropriate for the | |
| 51 | - | // user's platform. Points at www.zot.sh, which 301s to | |
| 52 | - | // the raw install scripts on github — same surface, stable short | |
| 53 | - | // URL that's safe to hard-code even if the scripts later move. | |
| 54 | - | func recommendedUpdateCommand() string { | |
| 55 | - | if runtime.GOOS == "windows" { | |
| 56 | - | return `iwr -useb https://www.zot.sh/install.ps1 | iex` | |
| 57 | - | } | |
| 58 | - | return `curl -fsSL https://www.zot.sh/install.sh | bash` | |
| 59 | - | } | |
| @@ -2,7 +2,6 @@ package modes | |||||
| 2 | 2 | ||||
| 3 | import ( | 3 | import ( | ||
| 4 | "fmt" | 4 | "fmt" | ||
| 5 | - | "runtime" | |||
| 6 | 5 | ||||
| 7 | "github.com/patriceckhart/zot/internal/tui" | 6 | "github.com/patriceckhart/zot/internal/tui" | ||
| 8 | ) | 7 | ) | ||
| @@ -31,29 +30,19 @@ func renderUpdateBanner(th tui.Theme, info UpdateInfo, width int) []string { | |||||
| 31 | out := []string{ | 30 | out := []string{ | ||
| 32 | frameHeaderColor(th, "update available", width, color), | 31 | frameHeaderColor(th, "update available", width, color), | ||
| 33 | } | 32 | } | ||
| 33 | + | out = append(out, "") | |||
| 34 | 34 | ||||
| 35 | title := fmt.Sprintf("zot %s is available (you're on %s).", info.Latest, info.Current) | 35 | title := fmt.Sprintf("zot %s is available (you're on %s).", info.Latest, info.Current) | ||
| 36 | out = append(out, " "+th.FG256(color, tui.Bold(title))) | 36 | out = append(out, " "+th.FG256(color, tui.Bold(title))) | ||
| 37 | - | 37 | + | out = append(out, "") | |
| 38 | - | cmd := recommendedUpdateCommand() | 38 | + | out = append(out, " "+th.FG256(th.Muted, "run: ")+th.FG256(color, "zot update")) |
| 39 | - | out = append(out, " "+th.FG256(th.Muted, "run: ")+th.FG256(th.ToolOut, cmd)) | |||
| 40 | 39 | ||||
| 41 | if info.URL != "" { | 40 | if info.URL != "" { | ||
| 42 | - | out = append(out, " "+th.FG256(th.Muted, "changelog: "+info.URL)) | 41 | + | out = append(out, " "+th.FG256(th.Muted, "changelog: ")+th.FG256(color, info.URL)) |
| 43 | } | 42 | } | ||
| 44 | 43 | ||||
| 44 | + | out = append(out, "") | |||
| 45 | out = append(out, frameRuleColor(th, width, color)) | 45 | out = append(out, frameRuleColor(th, width, color)) | ||
| 46 | out = append(out, "") | 46 | out = append(out, "") | ||
| 47 | return out | 47 | return out | ||
| 48 | } | 48 | } | ||
| 49 | - | ||||
| 50 | - | // recommendedUpdateCommand returns the one-liner appropriate for the | |||
| 51 | - | // user's platform. Points at www.zot.sh, which 301s to | |||
| 52 | - | // the raw install scripts on github — same surface, stable short | |||
| 53 | - | // URL that's safe to hard-code even if the scripts later move. | |||
| 54 | - | func recommendedUpdateCommand() string { | |||
| 55 | - | if runtime.GOOS == "windows" { | |||
| 56 | - | return `iwr -useb https://www.zot.sh/install.ps1 | iex` | |||
| 57 | - | } | |||
| 58 | - | return `curl -fsSL https://www.zot.sh/install.sh | bash` | |||
| 59 | - | } | |||