#!/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
lscolors_buildsuite_print_extensions() {
  sed -e '/^[ ]+#/d; /^[^\.\*]/d; /^$/d; s/^\([\.\*][^ ]+\).*/\1/' ../LS_COLORS
}

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
if [[ ! -f FILE ]]; then touch FILE; fi

# Executable file
if [[ ! -f EXECUTABLE ]]; then touch EXECUTABLE; fi
chmod +x EXECUTABLE

# Symlink
if [[ ! -f SYMLINK ]]; then ln -s FILE SYMLINK; fi

# Directory
if [[ ! -d DIRECTORY ]]; then mkdir DIRECTORY; fi

# Directory symlink
if [[ ! -d DIR-SYMLINK ]]; then ln -s DIRECTORY DIR-SYMLINK; fi

# Hardlink
if [[ ! -f HARDLINK1 ]]; then touch HARDLINK1; fi
if [[ ! -f HARDLINK2 ]]; then ln HARDLINK1 HARDLINK2; fi

# Create a link to nowhere
if [[ ! -f nothing ]]; then touch nothing; fi
if [[ ! -f ORPHAN ]]; then ln -s nothing ORPHAN; fi
if [[ -f nothing ]]; then rm nothing; fi

# World-writable
if [[ ! -f WORLDWRITEABLE ]]; then touch WORLDWRITEABLE; fi
chmod 0777 WORLDWRITEABLE

# Supported extensions
while read line; do
  if [[ ! -f test"$line" ]]; then
    line="${line//\*/.}"
    if [[ "${line:0:1}" == "." ]]; then
      touch ./DIRECTORY/test"$line"
    else
      touch ./DIRECTORY/"$line"
    fi
  fi
done < <( lscolors_buildsuite_print_extensions )


# vim: ft=sh foldmethod=marker: