]> git.wh0rd.org - home.git/commitdiff
bash-colors: add portable version
authorMike Frysinger <vapier@gentoo.org>
Mon, 18 May 2015 10:41:45 +0000 (18:41 +0800)
committerMike Frysinger <vapier@gentoo.org>
Mon, 18 May 2015 10:41:45 +0000 (18:41 +0800)
.bin/bash-colors

index a2bdff87cac23f382735709aa893641ded012710..ed61f8b3e131f81c2c8bae4b881d5a1c62b1579d 100755 (executable)
@@ -1,14 +1,21 @@
 #!/bin/bash
 # Author: Mike Frysinger <vapier@gmail.com>; released into the public domain; suck it.
 
+# This is for bash.
+BASH_PREFIX="\e"
+# And this is the portable one.
+POSIX_PREFIX="\033"
+# Default to bash.
+PREFIX=${BASH_PREFIX}
+
 show_env() {
        local c colors=(
-               GOOD="\$'\e[32;01m'"
-               WARN="\$'\e[33;01m'"
-               BAD="\$'\e[31;01m'"
-               HILITE="\$'\e[36;01m'"
-               BRACKET="\$'\e[34;01m'"
-               NORMAL="\$'\e[0m'"
+               GOOD="\$'${PREFIX}[32;01m'"
+               WARN="\$'${PREFIX}[33;01m'"
+               BAD="\$'${PREFIX}[31;01m'"
+               HILITE="\$'${PREFIX}[36;01m'"
+               BRACKET="\$'${PREFIX}[34;01m'"
+               NORMAL="\$'${PREFIX}[0m'"
        )
        for c in "${colors[@]}" ; do
                [[ -t 0 ]] || c="${c%=*}="
@@ -26,10 +33,15 @@ check256() {
 }
 
 showit() {
-       echo -e '\e['"${1};${2}mthis color is: \\\\e[${1};${2}m    \e[0m"
+       local col="${PREFIX}[${1};${2}m"
+       printf '%bthis color is: %s   %b\n' "${col}" "${col}" "${PREFIX}[0m"
 }
 
 main() {
+       if [[ $1 == "--posix" ]] ; then
+               PREFIX=${POSIX_PREFIX}
+               shift
+       fi
        case $1 in
        --env)
                show_env
@@ -86,7 +98,7 @@ main() {
                ;;
        *)
                cat <<-EOF
-                       usage: $0 [colors]
+                       usage: $0 [--posix] [colors]
 
                        Colors:
                         - --env        - show env you can eval in a shell