#!/bin/bash

################################################################################
# This file is part of the argtable3 library.
#
# Copyright (C) 2013-2025 Tom G. Huang
# <tomghuang@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of STEWART HEITMANN nor the  names of its contributors
#       may be used to endorse or promote products derived from this software
#       without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL STEWART HEITMANN BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
################################################################################

dist () {
  cat amalgamation-header.txt > argtable3.c
  cat ../src/argtable3_private.h \
      ../src/arg_utils.c \
      ../src/arg_hashtable.c \
      ../src/arg_dstr.c \
      ../src/arg_getopt.h \
      ../src/arg_getopt_long.c \
      ../src/arg_date.c \
      ../src/arg_dbl.c \
      ../src/arg_end.c \
      ../src/arg_file.c \
      ../src/arg_int.c \
      ../src/arg_lit.c \
      ../src/arg_rem.c \
      ../src/arg_rex.c \
      ../src/arg_str.c \
      ../src/arg_cmd.c \
      ../src/argtable3.c \
      >> argtable3.c

  mkdir -p ../dist
  mv argtable3.c ../dist
  cp ../src/argtable3.h ../dist
  cp ../LICENSE ../dist
  cp ../README.md ../dist
  cp -r ../tests ../dist
  cp ../src/argtable3_private.h ../dist/tests
  rm -rf ../dist/tests/bin
  rm -rf ../dist/tests/build
  cp -r ../examples ../dist
  rm -rf ../dist/examples/bin
  rm -rf ../dist/examples/build
  find ../dist -name '*' | xargs dos2unix
}

get_ver () {
  local argtable_ver
  if [ -f "../version.tag" ]; then
    argtable_ver=$(<../version.tag)
    # Remove build metadata (everything after and including "+")
    argtable_ver=${argtable_ver%%+*}
  else
    argtable_ver="v0.0.0"
  fi
  echo "$argtable_ver"
}

if [ "$1" = "dist" ]; then
  dist
  exit 0
elif [ "$1" = "cleanall" ]; then
  rm -rf ../dist
  exit 0
elif [ "$1" = "tar" ]; then
  dist
  ver=$(get_ver)
  tar -cvzf argtable-$ver-amalgamation.tar.gz -C .. dist
  exit 0
elif [ "$1" = "zip" ]; then
  dist
  ver=$(get_ver)
  find ../dist -name '*' | xargs unix2dos
  pushd ..
  zip -r tools/argtable-$ver-amalgamation.zip dist
  popd
  exit 0
elif [ "$1" = "help" ]; then
  echo "Argtable Amalgamation Package Build Script"
  echo ""
  echo "Copyright (C) 2013-2019 Tom G. Huang"
  echo "<tomghuang@gmail.com>"
  echo "All rights reserved."
  echo ""
  echo "Usage: build <command>"
  echo ""
  echo "Available commands:"
  echo "  dist      build the amalgamation package"
  echo "  tar       build the amalgamation package in UNIX archive format"
  echo "  zip       build the amalgamation package in Windows archive format"
  echo "  cleanall  delete all generated folders/files"
  echo "  help      display usage information"
  exit 0
else
  echo "Unknown command"
  echo "Type './build help' to get more information."
  exit 0
fi
