From 2e10b1d55bccbbe3de811df91a70772978e76abf Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 19 Mar 2019 00:42:32 -0400 Subject: tests: Add utilities for comparing colors to ls --- tests.sh | 2 +- tests/find-color.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ tests/ls-color.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100755 tests/find-color.sh create mode 100755 tests/ls-color.sh diff --git a/tests.sh b/tests.sh index 3576f7a..2df3448 100755 --- a/tests.sh +++ b/tests.sh @@ -2,7 +2,7 @@ ############################################################################ # bfs # -# Copyright (C) 2015-2018 Tavian Barnes # +# Copyright (C) 2015-2019 Tavian Barnes # # # # Permission to use, copy, modify, and/or distribute this software for any # # purpose with or without fee is hereby granted. # diff --git a/tests/find-color.sh b/tests/find-color.sh new file mode 100755 index 0000000..6ae6eba --- /dev/null +++ b/tests/find-color.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +############################################################################ +# bfs # +# Copyright (C) 2019 Tavian Barnes # +# # +# Permission to use, copy, modify, and/or distribute this software for any # +# purpose with or without fee is hereby granted. # +# # +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # +############################################################################ + +set -e + +L= +COLOR= +ARGS=() +for ARG; do + case "$ARG" in + -L) + L="$ARG" + ;; + -color) + COLOR=y + ;; + *) + ARGS+=("$ARG") + ;; + esac +done + +LS_COLOR="${BASH_SOURCE%/*}/ls-color.sh" + +if [ "$COLOR" ]; then + find "${ARGS[@]}" -exec "$LS_COLOR" $L {} \; +else + find "${ARGS[@]}" +fi diff --git a/tests/ls-color.sh b/tests/ls-color.sh new file mode 100755 index 0000000..e8cf038 --- /dev/null +++ b/tests/ls-color.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +############################################################################ +# bfs # +# Copyright (C) 2019 Tavian Barnes # +# # +# Permission to use, copy, modify, and/or distribute this software for any # +# purpose with or without fee is hereby granted. # +# # +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # +############################################################################ + +# Prints the "ground truth" coloring of a path using ls + +set -e + +L= +if [ "$1" = "-L" ]; then + L="$1" + shift +fi + +function ls_color() { + # Strip the leading reset sequence from the ls output + ls -1d --color "$@" | sed $'s/^\033\\[0m//' +} + +DIR="${1%/*}" +if [ "$DIR" = "$1" ]; then + ls_color "$1" + exit +fi + +BASE="${1##*/}" + +ls_color $L "$DIR/" | tr -d '\n' + +if [ -e "$1" ]; then + (cd "$DIR" && ls_color $L "$BASE") +else + (cd "$DIR" && ls_color "$BASE") +fi -- cgit v1.2.3