2014-06-05 23:58:49 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# GNU bash, version 4.3.18(1)-release (x86_64-unknown-linux-gnu)
|
|
|
|
#
|
|
|
|
# © Copyright 2014 Ryan Delaney.
|
|
|
|
# This program is distributed in the hope that it will be useful, but
|
|
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
# General Public License for more details.
|
|
|
|
#
|
|
|
|
# This program is free software: you can redistribute it and/or modify it
|
|
|
|
# under the terms of the GNU General Public License as published by the
|
|
|
|
# Free Software Foundation, either version 3 of the License, or (at your
|
|
|
|
# option) any later version.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License along
|
|
|
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
|
|
|
|
# Functions {{{1
|
|
|
|
verbose() {
|
|
|
|
if [[ "$verbose" = "1" ]]; then
|
|
|
|
echo "$1" >&2
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
error() {
|
|
|
|
echo "$1" >&2
|
|
|
|
}
|
|
|
|
# }}}
|
|
|
|
# Usage {{{1
|
|
|
|
#
|
|
|
|
usage() {
|
|
|
|
cat <<EOD
|
|
|
|
buildtest
|
|
|
|
Web site: http://github.com/trapd00r/LS_COLORS
|
|
|
|
© Copyright 2014 Ryan Delaney.
|
|
|
|
|
|
|
|
buildtest builds a test suite for LS_COLORS
|
|
|
|
|
|
|
|
Usage: buildtest [OPTION]
|
|
|
|
|
|
|
|
Options
|
|
|
|
-?, --help print this help and exit
|
|
|
|
-v, --verbose increase verbosity
|
|
|
|
EOD
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
# }}}
|
|
|
|
# Parameters {{{1
|
|
|
|
#
|
|
|
|
while :
|
|
|
|
do
|
|
|
|
case $1 in
|
|
|
|
--help | -\?)
|
|
|
|
usage
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
-v | --verbose)
|
|
|
|
# Each instance of -v adds 1 to verbosity
|
|
|
|
local verbose=$((verbose+1))
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
--) # End of all options
|
|
|
|
shift
|
|
|
|
break
|
|
|
|
;;
|
|
|
|
-*)
|
|
|
|
echo "FATAL: Unknown option : $1" >&2
|
|
|
|
exit 1
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
*) # no more options. Stop while loop
|
|
|
|
break
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
# }}}
|
|
|
|
# Dependencies {{{
|
|
|
|
if ! type sed &> /dev/null; then echo "ERROR: Missing dependency: sed" 1>&2; exit 1; fi
|
|
|
|
# }}}
|
|
|
|
|
|
|
|
if [[ ! -d "./test" ]]; then mkdir test || exit 1; fi
|
|
|
|
cd test || exit 1
|
|
|
|
|
|
|
|
# File
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f FILE ]]; then touch FILE; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
|
|
|
|
# Executable file
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f EXECUTABLE ]]; then touch EXECUTABLE; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
chmod +x EXECUTABLE
|
|
|
|
|
2014-06-06 00:38:28 +02:00
|
|
|
# Symlink
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f SYMLINK ]]; then ln -s FILE SYMLINK; fi
|
2014-06-06 00:38:28 +02:00
|
|
|
|
2014-06-05 23:58:49 +02:00
|
|
|
# Directory
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -d DIRECTORY ]]; then mkdir DIRECTORY; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
|
2014-06-06 00:38:28 +02:00
|
|
|
# Directory symlink
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -d DIR-SYMLINK ]]; then ln -s DIRECTORY DIR-SYMLINK; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
|
|
|
|
# Hardlink
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f HARDLINK1 ]]; then touch HARDLINK1; fi
|
|
|
|
if [[ ! -f HARDLINK2 ]]; then ln HARDLINK1 HARDLINK2; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
|
|
|
|
# Create a link to nowhere
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f nothing ]]; then touch nothing; fi
|
|
|
|
if [[ ! -f ORPHAN ]]; then ln -s nothing ORPHAN; fi
|
|
|
|
if [[ -f nothing ]]; then rm nothing; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
|
|
|
|
# World-writable
|
2014-06-24 00:43:52 +02:00
|
|
|
if [[ ! -f WORLDWRITEABLE ]]; then touch WORLDWRITEABLE; fi
|
2014-06-05 23:58:49 +02:00
|
|
|
chmod 0777 WORLDWRITEABLE
|
|
|
|
|
|
|
|
# Supported extensions
|
|
|
|
while read line; do
|
2014-06-24 01:08:01 +02:00
|
|
|
if [[ ! -f test"$line" ]]; then
|
2014-07-07 18:52:29 +02:00
|
|
|
line="${line//\*/}"
|
|
|
|
if [[ "${line:0:1}" == "." ]]; then
|
|
|
|
touch ./DIRECTORY/test"$line"
|
|
|
|
else
|
|
|
|
touch ./DIRECTORY/"$line"
|
|
|
|
fi
|
2014-06-24 01:08:01 +02:00
|
|
|
fi
|
2014-07-07 18:52:29 +02:00
|
|
|
done < <(sed -r -e '/^[ ]+#/d; /^[^\.\*]/d; /^$/d' ../LS_COLORS | grep -Po '^[\.\*]([A-z0-9]+)' )
|
2014-06-05 23:58:49 +02:00
|
|
|
|
|
|
|
# vim: ft=sh foldmethod=marker:
|