Перейти к содержанию

Выводим красивые нотификации средствами Bash

И снова здравствуйте!

Давно хотел реализовать функцию на Bash, чтобы красиво выводить какие-то значимые уведомления в терминал по типу как это сделано в npm.

Обычное echo уже не возбуждает, ничего не поделаешь. Да и всякие Gum тоже ставить не хочется.

Хуяк-хуяк и получился очередной ебальник-убивальник.

#!/bin/bash

bashdays_box() {
    local headertext="$1"
    local message="$2"

    local white=$'\e[38;5;007m'
    local reset=$'\e[0m'
    local color

    case "$headertext" in
        INFO)  color=$'\e[38;5;39m' ;;
        OK)    color=$'\e[38;5;34m' ;;
        DONE)  color=$'\e[38;5;34m' ;;
        WARN)  color=$'\e[38;5;214m' ;;
        ERROR) color=$'\e[38;5;196m' ;;
        DEBUG) color=$'\e[38;5;244m' ;;
        TASK)  color=$'\e[38;5;141m' ;;
        NOTE)  color=$'\e[38;5;45m' ;;
        *)     color=$'\e[38;5;244m' ;;
    esac

    local headerpadding=$(( ${#message} - ${#headertext} ))
    local header=${message:0:headerpadding}

    echo -e "\n${color}${headertext} ${header//?/─}────╮" \
        "\n│   ${message//?/ }   │" \
        "\n│   ${white}${message}${color}   │" \
        "\n│   ${message//?/ }   │" \
        "\n╰──${message//?/─}────╯${reset}"
}

bashdays_box "INFO" "Hello from https://t.me/bashdays"
bashdays_box "ERROR" "Swap is enabled — this may affect performance"
bashdays_box "WARN" "Certificate expires in 5 days"
bashdays_box "DEBUG" "Using config file: /etc/myapp/config.yml"
bashdays_box "DONE" "All services started"

Всё просто! Передаем тип алерта и сообщение которое нужно выводить в рамке.

А чё, красиво получилось! Забирай себе, глядишь когда-нибудь пригодится.

Чтиво: Box-drawing characters

ㅤЧитать первым в Телеграм

Комментарии