summaryrefslogtreecommitdiff
path: root/internal/console/console.go
diff options
context:
space:
mode:
authorAsh McKenzie <amckenzie@gitlab.com>2019-09-11 23:00:48 +1000
committerIgor Drozdov <idrozdov@gitlab.com>2019-10-23 11:07:22 +0300
commit412ed17cc66d876c46ee8df3767066ca0e676f28 (patch)
tree1cfc7c78ada4933ce2c458a8d7404cc41c39b846 /internal/console/console.go
parent629e3bf9c31687f7b824cf29ba07ad2ce402e280 (diff)
downloadgitlab-shell-412ed17cc66d876c46ee8df3767066ca0e676f28.tar.gz
New console package for writing to the console
Diffstat (limited to 'internal/console/console.go')
-rw-r--r--internal/console/console.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/internal/console/console.go b/internal/console/console.go
new file mode 100644
index 0000000..72f80cc
--- /dev/null
+++ b/internal/console/console.go
@@ -0,0 +1,73 @@
+package console
+
+import (
+ "fmt"
+ "io"
+ "strings"
+)
+
+func DisplayWarningMessage(message string, out io.Writer) {
+ DisplayWarningMessages([]string{message}, out)
+}
+
+func DisplayInfoMessage(message string, out io.Writer) {
+ DisplayInfoMessages([]string{message}, out)
+}
+
+func DisplayWarningMessages(messages []string, out io.Writer) {
+ DisplayMessages(messages, out, true)
+}
+
+func DisplayInfoMessages(messages []string, out io.Writer) {
+ DisplayMessages(messages, out, false)
+}
+
+func DisplayMessages(messages []string, out io.Writer, displayDivider bool) {
+ if noMessages(messages) {
+ return
+ }
+
+ displayBlankLineOrDivider(out, displayDivider)
+
+ for _, msg := range messages {
+ fmt.Fprintf(out, formatLine(msg))
+ }
+
+ displayBlankLineOrDivider(out, displayDivider)
+}
+
+func noMessages(messages []string) bool {
+ if len(messages) == 0 {
+ return true
+ }
+
+ for _, msg := range messages {
+ if len(strings.TrimSpace(msg)) > 0 {
+ return false
+ }
+ }
+
+ return true
+}
+
+func formatLine(message string) string {
+ return fmt.Sprintf("remote: %v\n", message)
+}
+
+func displayBlankLineOrDivider(out io.Writer, displayDivider bool) {
+ if displayDivider {
+ fmt.Fprintf(out, divider())
+ } else {
+ fmt.Fprintf(out, blankLine())
+ }
+}
+
+func blankLine() string {
+ return formatLine("")
+}
+
+func divider() string {
+ ruler := strings.Repeat("=", 72)
+
+ return fmt.Sprintf("%v%v%v", blankLine(), formatLine(ruler), blankLine())
+}